25.3.26

Прекратите дефрагментировать индексы! Доступна для предварительного изучения функция Auto Index Compaction

Автор: Luca Biondi, Stop Defragmenting indexes: Auto Index Compaction feature preview in SQL Server – This Feature will Kills Index Maintenance Jobs!

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

👉 Если вы пропустили, посмотрите здесь:
SQL Server 2025 CU3 – Скрытое улучшение производительности, о котором никто не говорит

В этой же статье мы представим удивительную новость в мире SQL Server, которую я называю функцией автоматического уплотнения индексов (Auto Index Compaction).

🚀 Представляем автоматическое уплотнение индексов

Автоматическое уплотнение индексов — это новая встроенная функция в движке SQL Server, которая уплотняет индексы в фоновом режиме с минимальными накладными расходами.

Никаких заданий. Никаких планов обслуживания. Никаких скриптов перестроения по ночам.

Просто… движок делает работу за вас.

⚡ Краткое описание

  • Индексы уплотняются автоматически в фоновом режиме
  • Работает непрерывно по мере изменения данных
  • Уменьшает потребление хранилища, ввода-вывода, CPU и памяти
  • Нет необходимости в заданиях на перестроение/реорганизацию индексов
  • Улучшает производительность запросов

💡 Это больше НЕ о фрагментации. Это о плотности страниц. 

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

📌 Где это доступно?

⚠️ В настоящее время эта функция находится в режиме предварительного просмотра и доступна только на:

  • Azure SQL Database
  • Управляемом экземпляре SQL Azure (политика постоянного обновления)
  • SQL Database в Microsoft Fabric
  • Примечание переводчика - мы пока в пролёте...

⚙️ Как включить

ALTER DATABASE [your_database]
SET AUTOMATIC_INDEX_COMPACTION = ON;

Отключить:

ALTER DATABASE [your_database]
SET AUTOMATIC_INDEX_COMPACTION = OFF;

🧠 Как это работает (простое объяснение)

По мере изменения данных (INSERT / UPDATE / DELETE) SQL Server:

  • Находит частично заполненные страницы
  • Перемещает строки, чтобы заполнить их
  • Удаляет пустые страницы

👉 Результат: те же данные, но меньше страниц.

А меньше страниц означает:

  • Меньше ввода-вывода
  • Меньше использования памяти
  • Меньше CPU
  • Более быстрые запросы

📊 Реальное влияние (почему оно огромно)

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

После нагрузки с интенсивными операциями записи:

  • Логические чтения взлетели с 25 → 1610
  • Плотность страниц упала с 99% → 52%
  • Количество страниц резко увеличилось

Затем сработало автоматическое уплотнение:

  • Логические чтения снизились ~на 98%
  • Плотность страниц вернулась к ~96%
  • Количество страниц резко уменьшилось

🔥 Всё это без какого-либо ручного вмешательства.

⚖️ Уплотнение против перестроения против реорганизации

ХарактеристикаУплотнение (Compaction)Перестроение (Rebuild)Реорганизация (Reorganize)
Область действияТолько изменённые страницыВсе страницыВсе страницы
Накладные расходыОчень низкиеВысокиеСредние
АвтоматизацияАвтоматическаяРучнаяРучная
ФрагментацияНе уменьшаетсяУменьшаетсяУменьшается
Плотность страницУлучшаетсяУлучшаетсяУлучшается

⚠️ Важные соображения

  • Небольшое увеличение CPU (низкие однозначные проценты)
  • Возможное увеличение записей в журнале транзакций
  • Очень короткие блокировки на уровне страниц (миллисекунды)
  • НЕ обновляет статистику

💡 Ключевая мысль: Для большинства рабочих нагрузок плотность страниц важнее, чем фрагментация.

Это полностью меняет то, как мы должны думать об обслуживании индексов.

🎯 Заключительные мысли

Эта функция — смена парадигмы.

Мы переходим от:

  • Ручного обслуживания
  • Запланированных заданий
  • Тяжёлых операций перестроения

К:

  • Автономной оптимизации
  • Непрерывной фоновой настройке
  • Минимальным накладным расходам


Комментариев нет:

Отправить комментарий