Как сообщить SQL Server не использовать кэш в запросах? - PullRequest
22 голосов
/ 07 декабря 2009

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

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

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

Ответы [ 3 ]

25 голосов
/ 07 декабря 2009
DBCC FREEPROCCACHE

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

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

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

19 голосов
/ 07 декабря 2009

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

CHECKPOINT
DBCC DROPCLEANBUFFERS

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

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

2 голосов
/ 07 декабря 2009

использование

WITH RECOMPILE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...