2016-03-16 2 views
0

У нас есть многопользовательская среда с несколькими сотнями баз данных, которые в основном идентичны схемам, но я обеспокоен тем, что план запросов может быть самым быстрым для одной базы данных, но не для другого. Например, если у нас есть одна база данных, в которой нет большого количества данных, и вы запускаете запрос, который считается достаточно быстрым, чтобы выполнять сканирование по всем строкам и сохраняет этот план, но затем, если вы запускаете тот же запрос с большая база данных будет генерировать/сохранять собственный план или использовать тот, который создан против гораздо меньшей базы данных.Сохраняются ли планы запросов в базе данных?

ответ

1

Да!

Если у вас есть несколько экземпляров базы данных, они имеют одну и ту же схему, НО каждая база данных различает записи и статистику по количеству и ... Так что имеет смысл, SQL Server поддерживает планы выполнения для каждой базы данных.

Примечание: «сохранение» не означает SQL Server, записывает планы запросов в базу данных. Они хранятся в кеше, пока работает служба SQL Server, и у нее достаточно памяти, и план по-прежнему необходимо хранить в кеше для последующего использования.

+1

SQL Server может * рассчитать * планы выполнения для каждой базы данных, но я считаю маловероятным, что они * сохранены *. Можете ли вы предоставить ссылку на официальную документацию, которая показывает, что они есть? –

+1

SQL Server хранит планы выполнения в системных таблицах, которые хранятся в каждой базе данных отдельно. позвольте мне найти ссылку. Почему, по-вашему, они не хранятся? – FLICKER

+0

Они хранятся в кеше. Легко и просто. В любой документации, которую вы читаете о планах выполнения, говорится о хранении их в кеше. –

Смежные вопросы