Копировать план выполнения сохраненного процесса в другую базу данных

Настроить:

Использование SQL Server 2008 R2.

У нас есть хранимая процедура, которая периодически работает очень долго. Я хотел бы проверить теорию, согласно которой анализ параметров приводит к тому, что механизм запросов выбирает неверный план.

Вопрос:

Как я могу скопировать планы выполнения запроса из одной базы данных в другую (тестовую) базу данных?

Замечания:

Я полностью осознаю, что это не может быть проблемой перехвата параметров. Тем не менее, я хотел бы рассмотреть предложения по созданию плана тестирования и его использованию, если это вообще возможно. Поэтому, пожалуйста, не просите меня публиковать код и / или схему таблицы, так как это не имеет значения в настоящее время.

2 ответа

Решение

Планы не переносимы, они привязываются к идентификаторам объектов. Вы можете использовать плангиды, но они строго привязаны к базе данных. Что вам нужно сделать, это проверить восстановленную резервную копию той же базы данных. На восстановленной резервной копии вы можете использовать плангид. Но для актуальности физические характеристики машин должны быть одинаковыми (процессоры, оперативная память, диски).

Обычно, хотя не нужно прибегать к таким махинациям, как копирование планов. Глядя на реальные планы выполнения, все ответы прямо там.

Вы пытались использовать OPTIMIZE FOR статья? С его помощью вы можете настроить свою процедуру проще, и без риска, что план, который вы копируете из другой базы данных, будет неуместным из-за различий в этих базах данных (если копирование плана даже возможно).

http://www.mssqltips.com/sqlservertip/1354/optimize-parameter-driven-queries-with-sql-server-optimize-for-hint/

Другие вопросы по тегам