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. Вы получаете другой тип соединения из-за изменения порога адаптивного соединения.

Добавить комментарий