Как позволить SQL Server не использовать кеш в запросах?

Просто общий вопрос:

Есть ли запрос/команда, которую я могу передать SQL Server, чтобы не использовать кеш при выполнении особого запроса?

Я ищу запрос/команду, которую я могу установить, а не настройку конфигурации. Не нужно ли это делать?

Ответ 1

DBCC FREEPROCCACHE

Удалит все планы выполнения кэшированных процедур. Это приведет к повторной компиляции всех последующих вызовов процедур.

Добавление "WITH RECOMPILE" к определению процедуры приведет к перекомпиляции процедуры при каждом ее вызове.

Я не верю, что (в SQL 2005 или более раннем) есть способ очистить кэш процедур для одного плана выполнения процедур, и я бы сомневался, что вы тоже это сделаете в 2008 году.

Ответ 2

Если вы хотите заставить запрос не использовать кеш данных, лучший подход - очистить кеш, прежде чем запускать запрос:

CHECKPOINT
DBCC DROPCLEANBUFFERS

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

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

Ответ 3

использовать

WITH RECOMPILE