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

Пример применения функции Substring в T-SQL, R и Python

Пересказ статьи Siddharth Mehta. SQL Server Substring Function Example with T-SQL, R and Python



Проблема


Манипуляция со строками является одним из наиболее фундаментальных элементов работы с данными, используемом почти в каждом примере преобразования данных. Основными целями манипуляции со строками являются форматирование, усечение, набивка, замена и аналогичные функции. Часто для применения этих функций требуется выбрать конкретную часть строки, и затем применить преобразования. В SQL Server имеется три языка, которые часто используются в связке - T-SQL, R и Python. Все эти языки программирования/запросов предоставляют возможность выбора подстроки с помощью функции substring или эквивалентной функции/оператора. Здесь мы научимся использовать функцию substring для выбора строки на всех трех языках.
Continue reading "Пример применения функции Substring в T-SQL, R и Python"

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

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


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

DMV для новичков

Пересказ статьи Monica Rathbun. DMV’s for the Beginner



Я замечаю, что некоторые администраторы баз данных и разработчики никогда не обращают внимания на динамические административные представления (DMV), которые доступны в SQL Server, начиная с версии 2005. Эти представления предоставляют полезные средства для определения того, что происходит с конкретным экземпляром SQL Server. Итак, в этой статье я собираюсь перечислить несколько моих любимых DMV как справку для тех, кто может быть незнаком с ними. Continue reading "DMV для новичков"