Skip to content

15 причин по которым запрос, который вчера еще работал быстро, сегодня работает медленно

Пересказ статьи Brent Ozar. 15 Reasons Your Query Was Fast Yesterday, But Slow Today


В порядке, определяемом частотой, с которой я их наблюдаю:

1. Различная рабочая нагрузка на сервер (например, запущен процесс создания резервной копии).
2. Вы получаете другой план запроса из-за прослушивания параметра (parameter sniffing).
3. Изменился запрос, например, кто-то обновил код на сервере или добавил столбец в предложение select.
4. Вы получили другой план из-за изменения статистики.
5. Изменилось аппаратное обеспечения (возможно, кто-то изменил настройки аппаратного обеспечения, перешел на соседнюю зашумленную виртуальную машину, или имеет место аппаратная конкуренция в облаке).
6. Кто-то добавил или удалил индекс.
7. Кто-то добавил или удалил флаг трассировки или другой конфигурационный параметр уровня сервера.
8. Изменилось само приложение, и не в состоянии так быстро обрабатывать результаты запроса.
9. Поставили заплатку, и это дало неожиданный побочный эффект.
10. Вы имеете тот же самый план, но другое выделение памяти.
11. Кто-то модифицирует большое число строк в рамках одной транзакции, и вы попадаете на расширение блокировки.
12. Ваш запрос придушил Resource Governor.
13. Он изначально не был быстрым.

И, начиная с SQL Server 2017 (если у вас были поколоночные индексы) и SQL Server 2019 (для всех):
14. Вы получаете различное выделение памяти из-за адаптивного выделения памяти (adaptive memory grants).
15. Вы получаете другой тип соединения из-за изменения порога адаптивного соединения.

12 способов переписать запросы SQL для улучшения их производительности

Пересказ статьи Bert Wagner. 12 Ways To Rewrite SQL Queries for Better Performance.


Эта публикация представляет собой краткий обзор всего того, что я уже рассматривал, а также 8 дополнительных методов, которые я использую время от времени и которые не требуют детального объяснения.
Продолжить чтение "12 способов переписать запросы SQL для улучшения их производительности"

CTE или временные таблицы, что лучше?

Пересказ статьи Brent Ozar. What’s Better, CTEs or Temp Tables?


Мне часто задают этот вопрос, поэтому давайте установим пример с базой данных Stack Overflow.
Продолжить чтение "CTE или временные таблицы, что лучше?"