Минимальное протоколирование (Bulk logged) и индексы

Минимальное протоколирование (Bulk logged) и индексыАвтор: Alexey Knyazev

Минимальное протоколирование — это протоколирование только информации, необходимой для восстановления транзакции без поддержки восстановления на момент времени.
Эта особенность может быть очень полезна, когда необходимо сократить время на выполнение некоторых операций. Сегодня я хочу поговорить о минимальном протоколировании некоторых DDL-операции с индексом. 

Минимально протоколируются следующие операции с индексами:

  • Операции CREATE INDEX (включая индексированные представления)
  • Операции ALTER INDEX REBUILD или DBCC DBREINDEX
  • Перестроение новой кучи DROP INDEX (если применимо)

Минимальное протоколирование выполняется более эффективно, чем полное, и снижает вероятность переполнения журнала во время выполнения операции с индексами. При этом минимальное протоколирование напрямую зависит от модели восстановления (recovery model) БД.

В следующей таблице перечислены операции с индексами и тип протоколирования, доступный для них в каждой из моделей восстановления базы данных. Эти модели восстановления поддерживаются для операций с индексами, выполняющихся как в оперативном (ONLINE), так и в автономном режиме (OFFLINE).

Операция с индексами Полная модель (Full) Модель с неполным протоколированием (Bulk logged) Простая модель (Simple)
ALTER INDEX REORGANIZE полное полное полное
ALTER INDEX REBUILD полное минимальное минимальное
CREATE INDEX полное минимальное минимальное
DBCC INDEXDEFRAG полное полное полное
DBCC DBREINDEX полное минимальное минимальное
DROP INDEX Освобождение индексной страницы полностью протоколируется; создание новой кучи (при необходимости) также полностью протоколируется Освобождение индексной страницы полностью протоколируется; создание новой кучи (при необходимости) протоколируется минимально Освобождение индексной страницы полностью протоколируется; создание новой кучи (при необходимости) протоколируется минимально

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

 


 

Список наших баз данных:

 

Создадим в каждой БД по одной таблице.

 


 

Cоздадим индекс на каждой из таблиц:

 


 

Перед созданием индекса, я создаю контрольную точку (checkpoint).

А теперь посмотрим с помощью недокументированной табличной функции fn_dblog, что было записано в журнал транзакций.

 


 

Далее вы можете самостоятельно убедиться на сколько полно логируются другие операции над индексами. Удачи!

Запись опубликована в рубрике Индексы, Полезно и интересно с метками . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Войти с помощью: