Другие ответы правильны о причинах, чтобы не бежать DBCC FREEPROCCACHE
. Однако есть также несколько причин для этого:
- консистенция
Если вы хотите сравнить два разных запроса или процедуры, которые пытаются сделать одно и то же по-разному, они могут попасть на одни и те же страницы. Если вы наивно выполняете запрос № 1, а затем запрос № 2, второй может быть намного быстрее просто потому, что эти страницы были кэшированы первым запросом. Если вы очищаете кеш перед каждым выполнением, они начинают работать равномерно.
Если вы хотите протестировать производительность «горячего» кэша, обязательно выполняйте запросы несколько раз, чередуясь и отбрасывая первые несколько запусков. Средние результаты.
- Наихудшая производительность
Скажем, у вас есть запрос, который занимает одну секунду для горячего кэша, но одну минуту для холодного кэша. Оптимизация, которая делает запрос в памяти на 20% медленнее, но связанный с вводом-выводом запрос на 20% быстрее, может быть большим выигрышем: при обычных операциях никто не заметит дополнительные 200 мс при нормальных обстоятельствах, но если что-то заставляет запрос запустить против диска, 48 секунд вместо 60 может спасти продажу.
Это менее важно для современных систем с десятками гигабайт памяти и относительно быстрым хранилищем SAN и SSD, но это все еще имеет значение. Если какой-то аналитик выполнит запрос массивной таблицы на вашу базу данных OLTP, которая уничтожит половину вашего буферного кеша, эффективные для хранения запросы вернут вас быстрее.
DBCC FLUSHPROCINDB
Произошла ошибка при запуске : неверное число параметров было указано в инструкции DBCC.