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 для выбора строки на всех трех языках.
Продолжить чтение "Пример применения функции Substring в T-SQL, R и Python"

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 или временные таблицы, что лучше?"

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

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



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