Почему мой запрос SQL быстрее во второй раз? - PullRequest
0 голосов
/ 29 октября 2018

Каждый раз, когда я получаю одинаковое время выполнения при выполнении SQL-запроса. есть ли шанс получить одно и то же время выполнения за все время, если SQL-запрос выполняется несколько раз?

1 Ответ

0 голосов
/ 29 октября 2018

Когда вы запускаете запрос в первый раз, а данные не находятся в кэше, сервер считывает данные с диска. Это отнимает много времени. Во второй раз, когда вы выполняете тот же запрос, данные уже находятся в кеше, поэтому это требует меньше времени.

есть ли шанс получить одно и то же время выполнения все время, если SQL запрос выполняется несколько раз?

Если вы хотите протестировать свои запросы с помощью холодного кэша (без кэширования данных, каждый раз), вы можете использовать DBCC DROPCLEANBUFFERS перед выполнением запроса:

Используйте DBCC DROPCLEANBUFFERS для тестирования запросов с холодным буферным кешем без выключения и перезапуска сервера. Сбросить чистые буферы из пула буферов и объектов columnstore из columnstore пул объектов, сначала используйте CHECKPOINT для создания холодного буферного кеша. это принудительно записывает все грязные страницы для текущей базы данных на диск и очищает буферы. После этого вы можете выдать DBCC Команда DROPCLEANBUFFERS для удаления всех буферов из пула буферов.

Конечно, это не должно использоваться в производственной среде.

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

...