18.3.26

Журнал транзакций SQL Server. Часть 3: Циклическая природа

Автор: Paul Randal, The SQL Server Transaction Log, Part 3: The Circular Nature of the Log

(Эта статья впервые появился на SQLperformance.com четыре года назад как часть серии блогов, до того как этот сайт был закрыт позднее в 2022 году, а серия была прервана. Переопубликовано здесь с разрешения, с небольшими правками.)

Во второй части этой серии я описал структурную иерархию журнала транзакций. Поскольку эта статья в основном касается описанных мной виртуальных файлов журнала (VLF), я рекомендую вам прочитать вторую часть, прежде чем продолжить.

Когда всё хорошо, журнал транзакций будет бесконечно циклически повторяться, повторно используя существующие VLF. Это поведение я называю циклической природой журнала. Однако иногда происходит что-то, что мешает этому, и журнал транзакций растёт и растёт, добавляя всё больше и больше VLF. В этой статье я объясню, как всё это работает, и почему иногда и не работает.

17.3.26

Как удалось убрал 32 секунды из запроса без добавления индекса

Автор: Luca Biondi, I Removed 32 Seconds From This SQL Server Query ...Without Adding an Index! Part 7

Это не теория.
Это не лабораторная настройка.
Это произошло с реальной рабочей нагрузкой.

Исходное время выполнения: 42 секунды.
После оптимизации: 9.8 секунды.

Никакого нового индекса.
Никакого изменения схемы.
Никакого обновления оборудования.

Просто понимание того, как работает движок.

Приятного чтения — давайте заставим SQL Server летать.

Продолжение серии статей, вот предыдущая: Всё ещё о Batch Mode… Параметры совместимости и опции запросов (Часть 6)

16.3.26

Стратегии индексирования для производительности SQL Server

Автор: Paul Randal, SQL101: Indexing Strategies for SQL Server Performance

Один из самых простых способов повысить производительность запросов в SQL Server — обеспечить быстрый доступ к запрашиваемым данным, причём максимально эффективно. В SQL Server использование одного или нескольких индексов может стать именно тем решением, которое вам нужно. Фактически, индексы настолько важны, что SQL Server может даже предупредить вас, когда обнаружит, что отсутствует индекс, который был бы полезен для запроса. Это обзорная статья объяснит, что такое индексы, почему они так важны, а также немного об искусстве и науке разработки различных стратегий индексирования.

15.3.26

Всё ещё о Batch Mode… Параметры совместимости и опции запросов (Часть 6)

Автор: Luca Biondi, Still on Batch Mode… – Part 6: Compatibility & Query Settings That Influence Execution

Назад к серии: Как указать Batch Mode для Rowstore, если его нет в плане (Часть 5)

Мы всё ещё говорим о пакетном режиме, потому что понимание того, когда он работает, так же важно, как и знание того, как его принудительно включить.

Сегодня мы углубимся: мы рассмотрим уровни совместимости, выделение памяти, оценку количества строк и флаги трассировки.

Приятного чтения, и пусть ваш CPU остаётся холодным при тяжёлых агрегатах!

13.3.26

Как указать Batch Mode для Rowstore, если его нет в плане (Часть 5)

Автор: Luca Biondi, Part 5 – How to Force Batch Mode on Rowstore When SQL Server Doesn’t Choose It

Предыдущая статья: Без новых индексов или изменений схемы - запросы быстрее в 10 раз с Batch Mode для Rowstore (Часть 4)

Давайте пристально изучим Actual Execution Plan, и углубимся в изучение пакетного режима для строчного хранения.

Накопительный пакет обновлений для SQL Server 2022 CU24 - KB5080999

Описание: KB5080999

Скачать: SQLServer2022-KB5080999-x64.exe

Дата выпуска: 12 марта 2026 г.

SQL Server 2022 — Версия: 16.0.4245.2

Накопительный пакет обновления 3 для SQL Server 2025 - KB5077896

Описание: KB5077896

Скачать: SQLServer2025-KB5077896-x64.exe

Дата выпуска: 12 марта 2026 г.

SQL Server 2025 — Версия: 17.0.4025.3

12.3.26

Без новых индексов или изменений схемы - запросы быстрее в 10 раз с Batch Mode для Rowstore (Часть 4)

Автор: Luca Biondi, SQL Server: No New Index. No Schema Changes. 10x Faster Queries – SQL Server Batch Mode on Rowstore Deep Dive!! Part 4!

Надеюсь, вам нравится эта серия. Я искренне верю, что она может быть очень полезной для тех, кто профессионально использует SQL Server, как это делаю я уже более 20 лет (как летит время!).

Сегодня мы поговорим о пакетном режиме для строчного хранения (Batch Mode on Rowstore) и о том, как сделать ваш запрос в 10 раз быстрее без добавления каких-либо индексов.

Что ж... в Части 3 мы представили колоночные индексы и увидели, как выполнение в пакетном режиме может кардинально улучшить аналитические запросы.

Если вы пропустили предыдущую часть, вы можете прочитать её здесь:

👉 Фильтрованный индекс против индексированного представления и индекса с хранением в колонках (Часть 3)

Но вот в чём поворот.

Начиная с SQL Server 2019, вам не всегда нужен колоночный индекс, чтобы получить производительность пакетного режима.

SQL Server может активировать пакетный режим для строчного хранения.

И иногда... как я сказал вам в начале этой статьи... ваш запрос становится в 5 или 10 раз быстрее без добавления ни одного индекса. Поэтому я предлагаю вам продолжить чтение...

11.3.26

Логические чтения не повторяемы на колоночных индексах (эх...)

Автор: Brent Ozar, Logical Reads Aren’t Repeatable on Columnstore Indexes. (sigh)

Иногда я действительно ненавижу свою работу.

Вечно, ВЕЧНО, я мог утверждать: «Когда вы измеряете производительность хранилища во время настройки индексов и запросов, вы всегда должны использовать логические чтения, а не физические, потому что логические чтения повторяемы, а физические — нет. Физические чтения могут меняться в зависимости от того, что находится в кэше, какие другие запросы выполняются в данный момент, от редакции вашего SQL Server и от того, используются ли упреждающие чтения. Логические чтения просто отражают точное количество прочитанных страниц, независимо от того, откуда пришли данные (с диска или из кэша), так что пока это число уменьшается, вы делаете свою работу хорошо».

Накопительный пакет обновления для SQL Server 2025 CU2 - KB5077466

Описание: KB5077466

Скачать: SQLServer2025-KB5077466-x64.exe

Дата выпуска: 10.03.2026

SQL Server 2022 — Версия: 17.0.4020.2

Исправление безопасности для SQL Server 2025 GDR - KB5077468

Описание: KB5077468

Скачать: SQLServer2025-KB5077468-x64.exe

Дата выпуска: 10.03.2026

SQL Server 2022 — Версия: 17.0.1105.2

Исправление безопасности для SQL Server 2022 CU23 - KB5077464

Описание: KB5077464

Скачать: SQLServer2022-KB5077464-x64.exe

Дата выпуска: 10.03.2026

SQL Server 2022 — Версия: 16.0.4240.4

Исправление безопасности для SQL Server 2022 GDR - KB5077465

Описание: KB5077465

Скачать: SQLServer2022-KB5077465-x64.exe

Дата выпуска: 10.03.2026.

SQL Server 2022 — Версия: 16.0.1170.5

Исправление безопасности для SQL Server 2019 CU32 - KB5077469

Описание: KB5077469

Скачать: SQLServer2019-KB5077469-x64.exe

Дата выпуска: 10.03.2026

SQL Server 2019 — версия: 15.0.4460.4

Исправление безопасности для SQL Server 2019 GDR - KB5077470

Описание: KB5077470

Скачать: SQLServer2019-KB5077470-x64.exe

SQL Server 2019 — версия: 15.0.2160.4

Дата выпуска: 10.03.2026

Исправление безопасности для SQL Server 2017 CU31 - KB5077471

Описание: KB5077471

Скачать: SQLServer2017-KB5077471-x64.exe

SQL Server 2017 — версия: 14.0.3520.4

Дата выпуска: 10.03.2026

Исправление безопасности для SQL Server 2017 GDR - KB5077472

Описание: KB5077472

Скачать: SQLServer2017-KB5077472-x64.exe

SQL Server 2017 — версия: 14.0.2100.4

Дата выпуска: 10.03.2026

Исправление безопасности для SQL Server 2016 SP3 - KB5077474

SQL Server 2016 — версия: 13.0.6480.4

Описание: KB5077474

Скачать: SQLServer2016-KB5077474-x64.exe

Дата выпуска: 10.03.2026

10.3.26

Фильтрованный индекс против индексированного представления и индекса с хранением в колонках (Часть 3)

Автор: Luca Biondi, SQL Server, Filtered Index vs Indexed View vs Columnstore Index! Part 3

В предыдущих статьях мы сравнили фильтрованные индексы и индексированные представления, поняв, в каких случаях каждый из них проявляет себя наилучшим образом.

Если вы пропустили Часть 2, вы можете прочитать её здесь:

👉 Фильтрованные индексы: сравнение производительности с примерами (Часть 2)

Сегодня мы добавляем в игру нового игрока.

Потому что, когда объём данных начинает расти… когда миллионы строк превращаются в десятки или сотни миллионов… мы получаем мощного нового союзника:

Колоночные индексы (Columnstore Indexes).

И это меняет всё.

8.3.26

Фильтрованные индексы: сравнение производительности с примерами (Часть 2)

Автор: Luca Biondi, Filtered Index vs Indexed View in SQL Server: Complete Performance Comparison with Real Examples

Эта статья является продолжением предыдущего глубокого погружения в настройку производительности SQL Server!

Если вы пропустили Часть 1, вы можете прочитать её здесь:

Как фильтрованные индексы кардинально улучшают производительность запросов (часть 1)

В первой статье мы проанализировали, как фильтрованные индексы могут кардинально сократить логические чтения и оптимизировать планы выполнения.

Сегодня мы углубляемся и сравниваем фильтрованный индекс с индексированным представлением, используя практические, воспроизводимые SQL-скрипты.

Вы найдёте конкретные сценарии, которые сможете протестировать в своей собственной лаборатории — потому что настройка производительности — это не теория, это экспериментирование.