Записи с меткой «план выполнения запроса»

Сравнение планов в Management Studio

Пересказ статьи Gail. Comparing plans in Management Studio Ранее я рассматривал использование Query Store (хранилище запросов) для сравнения планов выполнения, но это не единственный способ, который позволяет сравнить два плана выполнения. Другой метод требует сохраненного плана выполнения и просмотрщика планов выполнения в Management Stidio.

Почему не следует использовать SELECT * в рабочих системах (никогда!)

Пересказ статьи Gavin Draper. Why You Shouldn’t Use SELECT * In Production Systems (EVER!) Это не значит, что я никогда не использую операторы SELECT *; обычно я использую их для прямых запросов на стадии разработки. Моё предупреждение относится к их использованию в рабочих системах.

Какой-то индекс в моем индексе

Пересказ статьи Gavin Draper. Waiter Waiter There’s an Index in my Index Речь пойдет о том, как SQL Server обращается к одновременно к кластеризованному и некластерихованному индексам при поиске закладок.

Соединения слиянием (merge join)

Пересказ статьи Bert Wagner. Visualizing Merge Join Internals And Understanding Their Implications Merge Joins Merge Joins (соединения слиянием) теоретически являются самыми быстрыми физическими операторами соединения, однако они требуют, чтобы данные обоих входов были отсортированы. Базовый алгоритм работает следующим образом: SQL Server сравнивает первые строки обоих отсортированных входов. Затем сравнение продолжается со следующими строками второго входа …

Внутри оптимизатора: Подробно о ROW GOAL

Пересказ статьи Paul White. Inside the Optimizer: Row Goals In Depth Одно из главных предположений, из которых исходит модель оптимизатора запросов SQL Server, заключается в том, что клиенты потребляют все строки, производимые запросом. Это приводит к планам, которые исходят из полной стоимости выполнения, хотя строки могут больше не производиться.

Итераторы, планы запроса, и почему они выполняются в обратном порядке

Пересказ статьи Paul White. Iterators, Query Plans, and Why They Run Backwards Итераторы SQL Server обладает расширенной архитектурой для оптимизации и выполнения запросов, используя «итераторы» в качестве строительных блоков. Вероятно, итераторы более знакомы в их представлении на графическом плане, где каждая иконка представляет отдельный итератор. Они также показаны как узлы RelOp при выводе плана запроса …

Введение в оценку стоимости плана

Пересказ статьи Benjamin Nevarez. An Introduction to Cost Estimation Недавно, присутствуя на сессии саммита PASS, посвященного оптимизатору запросов, мне был задан вопрос о том, как рассчитываются оценки стоимости затрат процессора (Estimated CPU cost) и затрат на ввод-вывод (Estimated I/O cost), т.е. откуда берется конкретное значение, скажем, 1,13256. В тот момент я мог ответить только то, …

Адаптивная обработка запросов в SQL Server 2017

Пересказ статьи Роберта Шелдона Adaptive Query Processing in SQL Server 2017 До версии SQL Server 2017, если план запроса содержал некорректную оценку кардинального числа (число обрабатываемых строк), ядро базы данных продолжало использовать этот план при каждом выполнении оператора, пока этот план сохранялся в кэше, что часто приводило к падению производительности. Например, план выполнения мог зарезервировать …

Использование индексов

Индекс создается командой create index и непосредственно недоступен пользователю. Индексы используются оптимизатором запросов для доступа к данным в базовых таблицах и представлениях. Индексы бывают двух видов — кластеризованные и некластеризованные. Некластеризованный индекс — это вспомогательная таблица, которая содержит данные столбца/столбцов (ключ индекса), по которым индексируется базовая таблица и указатель (RID) на данные в таблице, соответствующие …