Тестирование скорости запросов с использованием некэшированных данных? - PullRequest
3 голосов
/ 22 марта 2019

SQL Server 2014. У меня на запрос уходит 44 секунды при первом запуске. После этого требуется 6 секунд. Я уверен, что это потому, что данные кэшируются в памяти (и, возможно, потому, что план запроса также кэшируется). Я хочу найти способы ускорить мой запрос, поэтому в первый раз это занимает 6 секунд, но это трудно проверить, когда все кэшируется.

Как заставить мой запрос НЕ использовать кэшированные данные? Или, другими словами, как заставить свой запрос выполняться так, как будто он выполняется каждый раз впервые?

Я попытался добавить опцию recompile, но это не имело никакого значения.

Спасибо!

Ответы [ 2 ]

3 голосов
/ 22 марта 2019

Вы, похоже, ищете SQL Server DBCC DROPCLEANBUFFERS команда . Из документации:

Используйте DBCC DROPCLEANBUFFERS для тестирования запросов с холодным буферным кешем без выключения и перезапуска сервера.

Эта команда может использоваться в сочетании с DBCC FREEPROCCACHE:

Очистка кэша процедур (планов) приводит к выселению всех планов, и при выполнении входящих запросов компилируется новый план вместо повторного использования любого ранее кэшированного плана.

Отказ от ответственности: пожалуйста, рассмотрите влияние такой команды перед ее выполнением; это следует использовать только в целях тестирования, в непроизводственной среде!

2 голосов
/ 23 марта 2019

Это классическая проблема, и иногда вы находитесь в среде PD, где может быть нежелательно очищать кеш, как этот.

Всегда лучше взглянуть на план запроса и не беспокоиться о том, сколько времени занял запрос. Проанализируйте план и посмотрите, где он мог пойти не так. Запрос хорош, потому что план хорош, а время выполнения должно быть вторичным. Просто доверьтесь утверждению пользователя, что оно было медленным, и не останавливайтесь на том, что [сейчас он работает нормально]. Работает нормально, если план выглядит хорошо.

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