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

Twitter RSS
Home Posts tagged "SQL Server"
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

SQL Rally 2013 Moscow — Window Functions

Всех приветствую. Выкладываю материалы с прошедшей конференции SQL Rally. Тема моего доклада оконные функции в SQL Server. В докладе были рассмотрены основные концепции (partitioning, ordering, framing), сделан обзор существовавших и появившихся функций в SQL Server 2012, а также приведены сведения о планах выполнения и производительности запросов с оконными функциями. SQLRally2013.Moscow.WindowFuctions.DmitryPilugin (~1.52 MB) Спасибо всем участникам

Read More…

 
formats

24 HOP Columnstore Indexes

Вот и прошла глобальная on-line конференция 24 Hours of PASS Russia. В этом году, я первый раз принимал в ней участие в качестве докладчика, выступая с докладом про новую технологию Columnstore Indexes в SQL Server 2012. К сожалению, я не смог присутствовать на всех докладах коллег, но те что удалось посмотреть оставили только положительные впечатления.

Read More…

 
formats

Оптимизатор (недокументированное): Отключить правила преобразования в отдельном запросе

Многие, кто интересуется внутренним устройством оптимизатора, уже наверняка знают, что такое правила преобразования и то, что их можно отключить в сессии при помощи dbcc ruleoff/ruleon. В этой короткой заметке мы посмотрим на недокументированный хинт, который позволяет отключать правила преобразования в отдельно взятом запросе. Прим: Те, кто не знают про правила преобразования, но интересуются, могут обратиться

Read More…

 
formats

Оптимизатор (ч.4): Optimization: Full Optimization: Search 1

Optimization: Full Optimization: Search 1 В данном разделе: — update statistics with row_count, page_count; — преобразования memo; — параллельный план;   Данная фаза, называется также Quick Plan. Как мы уже говорили, запросы могут миновать стадию Transaction Processing (search 0), и сразу перейти к этой фазе, если в запросе менее трех таблиц. Также эта фаза примечательна

Read More…

 
formats

Оптимизатор (ч.3): Optimization: Full Optimization: Search 0

Optimization: Full Optimization: Search 0 В этом разделе: — определение стадий оптимизации, которые проходит запрос; — структура для поиска альтенатив memo; — оператор Apply lookup в nested loops join; — оценки и вычисления селективности запроса с несколькими предикатами; — стоимость операторов; — Rebind, Rewind, RowGoal; — просмотр начального и конечного memo; — выходное дерево физических

Read More…

 
formats

Оптимизатор (ч.2): Optimization: Trivial Plan Optimization

Optimization: Trivial Plan Optimization В этом разделе: — применение правил преобразования; — особенности стадии trivial plan; — почему загружается статистика; — как пропустить фазу поиска тривиального плана (upd) Итак, мы получили наше упрощенное дерево. Но как оптимизатор догадался его упростить, что именно сделал. Разберемся. Для начала, немного теории.