Я пытаюсь улучшить производительность хранимой процедуры. Когда я запускаю SP, он заканчивается почти мгновенно, как если бы что-то было кэшировано. Мне сказали использовать следующие две строки SQL перед выполнением SP в SSMS:
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
Когда я запускаю SP с двумя строками кода выше, SP заканчивается примерно через 8 секунд. Однако действительно ли это дает мне реальное время выполнения (например, если я запускаю это из приложения)? Откуда мне знать?
Ответы:
Эти команды делают две вещи:
В основном вы получаете время, эквивалентное сценарию «наихудшего случая» - вы просто перезагружаете сервер, и в памяти ничего нет. Последующие запуски не должны оплачивать стоимость извлечения данных с диска, поскольку эти страницы уже загружены в память.
Это похоже на реальную ситуацию: вашему первому пользователю, запустившему конкретный запрос, скорее всего, придется ждать дольше, чем при последующих запусках, при условии, что вы проверяете те же данные.
Хороший метод, который мне нравится использовать, - запускаться несколько раз и брать среднее значение. Это особенно полезно в общей среде, поскольку у вас нет полного контроля над общими ресурсами, такими как tempdb.
Вы также можете использовать эти команды, чтобы получить больше информации о том, что на самом деле происходит за кулисами:
Они предоставят вам подробную информацию о чтениях страниц с диска (для каждого объекта), чтениях логических страниц, времени, потраченном на составление плана, и времени, потраченном на выполнение запроса.
источник
GO 5
как в SSMS. Это бесплатная загрузка, я не пытаюсь вам что-либо продать. sqlsentry.net/plan-explorer/sql-server-query-view.asp