Рубрика «Оптимизация»

Вопросы, связанные с оптимизацией запросов.

Есть ли смысл теперь использовать VARCHAR(n)?

Пересказ статьи Rob Garrison. What’s the Point of Using VARCHAR(n) Anymore? Когда вы сохраняете большие символьные строки или любые другие типы данных, которые вы собираетесь записать как VARCHAR или VARBINARY, имеются факторы, которые влияют на то, как эти данные хранятся внутри SQL Server. Это, в свою очередь, влияет на производительность вставки и обновления.

Анатомия записи

Пересказ статьи Paul Randal. Inside the Storage Engine: Anatomy of a record Что представляют собой записи? На упрощенном уровне запись — это физическое хранилище, связанное со строкой в таблице или индексе. Но не все так просто…

Статистика в SQL Server

Пересказ статьи Grant Fritchey. Statistics in SQL Server Оптимизатор запросов SQL Server опирается на статистику для построения адекватного плана запроса. Если статистика неверна, устарела или отсутствует, вы имеете весьма слабую надежду на хорошую производительность ваших запросов. Поэтому важно понимать, как SQL Server поддерживает статистику распределения. Что такое статистика? Оптимизатор запросов SQL Server использует статистику распределения, …

Внутри оптимизатора: Оценка стоимости плана

Пересказ статьи Paul White. Inside the Optimizer: Plan Costing Оптимизатор SQL Server генерирует множество физических альтернатив плана на основе логических требований, выраженных на T-SQL. Если требуется полная оптимизация на основе стоимости, стоимость назначается каждому итератору в каждом альтернативном плане, и, в конечном счете, план с наименьшей общей стоимостью выбирается для исполнения.

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

Пересказ статьи 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. В тот момент я мог ответить только то, …

Оконные функции T-SQL и производительность

Пересказ статьи Kathi Kellenberger. T-SQL Window Functions and Performance Оконные функции упрощают написание многих запросов и зачастую обеспечивают лучшую производительность по сравнению со старыми методами. Например, использование функции LAG существенно лучше, чем применение самосоединения. Однако чтобы добиться лучшей производительности в целом, необходимо понимать концепции оконных функций, и то как они используют сортировку для получения результата. …

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

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

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

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