Архив метки: Maintenance

Улучшаем Maintenance Plan в MS SQL 2016

В этой статье я расскажу какие новые функциональные возможности доступны в SQL Server 2016 касательно планов обслуживания базы данных (Maintenance Plan) для переиндексации, реорганизации индексов и DBCC CHECKDB и есть ли особенности в их тонкой настройке для уменьшения downtime периода.

SQL Server 2016 Reindex and Reorganize

SQL Server CTP 2 016 2.4+ улучшил функциональность для переиндексации и реорганизации индексов, используя задачи по обслуживанию базы данных. Предположим, что мы хотим реализовать следующий план переиндексации:

1. Reorganize index: если фрагментация > 15% и количество страниц > 1000
2. Rebuild index: Если фрагментация > 30% and количество страниц > 1000

Если мы откроем план обслуживания базы данных из Management Studio в SQL 2016 CTP 2.4, то увидим, что у нас есть эти опции для тонкой настройки индексов:

Как видим у нас есть возможность задавать следующие параметры для оптимизации индексов:
— если фрагментация более задаваемого значения
— если количество страниц более задаваемого значения
— и еще один немаловажный параметр — или вообще индекс использовался в течении n-го количества дней

 Улечшение для SQL Server 2016 Rebuild Index

В SQL Server 2016, задача перестроения индекса в плане обслуживания базы данных включает в себя дополнительные функции:

MAXDOP: изменение максимальной степени параметра конфигурации параллелизма на время операций с индексами.

Pad_Index: использует опцию PAD_INDEX, которая указывает процент, до которого заполняются не листовые индексные страницы

MAX_DURATION: время ожидания (целочисленное значение, указанное в минутах) в течение которого блокировки для операции перестроения индекса в режиме «в сети» будут ожидать с низким приоритетом при выполнении команды DDL. Если операция будет заблокирована на время MAX_DURATION, будет выполнено одно из действий ABORT_AFTER_WAIT. Время MAX_DURATION всегда указывается в минутах.

В случае превышения значения MAX_DURATION, с помощью параметра ABORT_AFTER_WAIT мы можем указать, что делать далее:

NONE — Продолжить ожидание блокировки с обычным приоритетом.
SELF — Прекратить операцию DDL по перестроению индекса в режиме «в сети», выполняемую в данный момент без предпринятия какого-либо действия.
BLOCKERS — Остановить все пользовательские транзакции, в данный момент блокирующие операцию DDL по перестроению индекса в режиме «в сети», чтобы можно было продолжить данную операцию. Параметр BLOCKERS требует, чтобы учетная запись имела разрешение ALTER ANY CONNECTION.

SQL Server 2016 Database Check Integrity Task

Если посмотреть на задачу, которая обслуживает целостность, то можно увидеть следующее:
Include Indexes: включение индексов в процессе DBCC CHECKDB
Physical only: ограничивает проверку на целостность физической структуры страницы, запись заголовков и согласованность распределения базы данных.  Использование этой опции может уменьшить время выполнения DBCC CHECKDB для больших баз данных, и рекомендуется для частого использования в production системах.
Tablock:  DBCC CHECKDB получает блокировку таблицы вместо использования внутреннего моментального снимка базы данных.  Это включает в себя краткосрочные exclusive (X) блокировки на базе данных. Использование этой опции может помочь DBCC CHECKDB процедуре работать быстрее под нагрузкой, но снижает параллелизм в базе данных, во время ее выполнения.