Заметки Дмитрия Пилюгина о Microsoft SQL Server 

Twitter RSS
Home SQL Server (все заметки) Archive for category "оптимизатор"
formats

USE HINT и DISABLE_PARAMETER_SNIFFING

Прослушивание параметров — это прием оптимизации, который позволяет использовать значения параметров модуля (например, хранимой процедуры или функции), во время первого вызова, для оценки предполагаемого числа строк при построении плана. Прослушивание параметров в большинстве случаев полезная вещь, но эта техника плохо работает если значения параметров сильно отличаются по селективности. Например, в случае если для одного значения

Read More…

 
formats

USE HINT и ENABLE_QUERY_OPTIMIZER_HOTFIXES

Оптимизатор запросов, это компонент SQL Server, который отвечает за то, как именно будет выполняться запрос. Это довольно сложный механизм, и разработчики, которые его пишут, не застрахованы от ошибок. Сложность в исправлении ошибок оптимизатора заключается в том, что даже если найдена ошибка, приводящая к неэффективному плану, нельзя ее просто исправить. Исправление этой ошибки для какого-то проблемного

Read More…

 
formats

USE HINT и FORCE_LEGACY/DEFAULT_CARDINALITY_ESTIMATION

Cardinality Estimation, СЕ (оценка кардинальности) – это оценка предполагаемого числа строк, которое будет обработано тем или иным оператором запроса. Оценка – один из ключевых факторов при построении плана запроса (более подробно я рассматривал эту тему в докладе кардинальность и планы выполнения). Оценку числа строк осуществляет компонент Cardinality Estimator. До 2014 сервера, была всего одна версия

Read More…

 
formats

USE HINT и DISABLE_OPTIMIZED_NESTED_LOOP

Один из доступных алгоритмов соединения двух таблиц в SQL Server это вложенные циклы (Nested Loops). В зависимости от выбранного оптимизатором порядка соединения таблиц, одна из таблиц выбирается как внешняя (по ней открывается внешний цикл), вторая как внутренняя (для каждой строки из внешней таблицы выполняется внутренний цикл по второй таблице), во время соединения, внутри циклов проверяется

Read More…

 
formats

USE HINT и новые указания запросов в SQL Server 2016 SP1

«Query Hints» в документации переводится как «указания запросов», кто-то называет их «подсказками», но чаще говорят просто «хинты». Я буду использовать в заметке именно последнее выражение, т.к. оно более распространено в повседневной жизни и сразу дает понять, о чем идет речь. Эта публикация — введение, она открывает цикл заметок по новым хинтам, которые появились в SQL

Read More…

 
formats

Что можно узнать из плана запроса

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

Read More…

 
formats

Оконные функции и row goal

В этой заметке, я хочу описать один любопытный случай падения производительности в запросах с оконными функциями и неравномерным распределением данных. Для людей, работающих с SQL Server, использование оконных функций, как и неравномерное распределение данных – обычное и довольно частое явление, с которым периодически сталкиваешься в реальной жизни. При определенном стечении обстоятельств, два фактора соединенных вместе,

Read More…

 
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
Комментарии к записи Оконные функции и row goal отключены  comments 
formats

Good Enough Plan

Когда-то, я уже писал заметки на тему факторов, ограничивающих процесс оптимизации, с целью сократить его время. Это timeout и good enough plan. Особенно подробно я расписывал концепцию таймаута, сегодня я хочу рассказать про «good enough plan». Я начну с одной любопытной, на мой взгляд, истории, которую слышал от одного из членов команды разработки оптимизатора на

Read More…

 
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
Комментарии к записи Good Enough Plan отключены  comments 
formats

Cardinality Estimation Framework 2014 First Look

Введение На прошедшем мероприятии SQLSaturday #261 — Moscow 2013 я рассказывал о том, как оптимизатор оценивает предполагаемое число строк и на основании этого строит план запроса. Иными словами я говорил про оценки кардинальности, и разумеется, не смог обойти вниманием новую версию механизма оценки кардинальности в SQL Server 2014. What’s New (Database Engine) Информации на эту

Read More…

 
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
Комментарии к записи Cardinality Estimation Framework 2014 First Look отключены  comments 
formats

Забавный случай упрощения соединений 2

Продолжая разговор, об упрощении дерева запроса, начатый в предыдущем посте, рассмотрим еще один интересный случай упрощения.

 
 Share on Facebook Share on Twitter Share on Reddit Share on LinkedIn
Комментарии к записи Забавный случай упрощения соединений 2 отключены  comments