Предварительные условия для минимального ведения журнала массового импорта данных

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

ПримечаниеПримечание

Модель восстановления с неполным протоколированием предназначена для временной замены модели полного восстановления на период проведения массовых операций. Сведения о переключении между моделью полного восстановления и моделью восстановления с неполным протоколированием см. в разделе Особенности переключений между моделью полного восстановления и моделью восстановления с неполным протоколированием.

Требования к таблицам для минимального протоколирования операций массового импорта

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

  • В данный момент таблица не реплицируется.

  • Задана блокировка таблицы (с помощью TABLOCK).

    Дополнительные сведения см. в разделе Управление операциями блокировки при массовом импорте.

    ПримечаниеПримечание

    Хотя при минимальном ведении журнала вставки данных операции массового импорта в журнале транзакций не регистрируются, компонент Database Engine по-прежнему ведет журнал всех выделений экстентов для таблицы.

Можно ли использовать минимальное ведение журнала, также зависит от того, индексируется ли таблица и, если это так, пуста ли она.

  • Если у таблицы нет индексов, ведется минимальный журнал страниц данных.

  • Если у таблицы нет кластеризованного индекса, но есть один или более некластеризованных индексов, всегда ведется минимальный журнал страниц данных. Однако применяемый способ ведения журнала страниц индекса зависит от того, пуста ли таблица.

    • Если таблица пуста, ведется минимальный журнал страниц индекса.

    • Если таблица не пуста, ведется полный журнал страниц индекса.

      ПримечаниеПримечание

      Если начать с пустой таблицы и выполнить массовый импорт данных несколькими пакетами, для первого пакета будет вестись минимальный журнал страниц как данных, так и индекса, но, начиная со второго пакета, минимальный журнал будет вестись только для страниц данных.

  • Если у таблицы есть кластеризованный индекс, и он пуст, будет вестись минимальный журнал и страниц данных, и страниц индекса. И наоборот, если у таблицы есть непустой кластеризованный индекс, будет вестись полный журнал и страниц данных, и страниц индекса независимо от модели восстановления.

    ПримечаниеПримечание

    Если начать с пустой таблицы и выполнить массовый импорт данных несколькими пакетами, для первого пакета будет вестись минимальный журнал и страниц данных, и страниц индекса, но, начиная со второго пакета, неполный журнал будет вестись только для страниц данных.

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

ПримечаниеПримечание

Когда включена репликация транзакций, операции BULK INSERT полностью протоколируются даже в модели восстановления с неполным протоколированием.

Рекомендация При использовании модели восстановления с неполным протоколированием для импорта большого набора строк таблицы, рекомендуется распределить массовый импорт по нескольким пакетам. Каждый пакет соответствует одной транзакции. Таким образом, после завершения пакета его журнал становится доступным для резервного копирования. Следующая резервная копия журнала повторно использует место, занимавшееся массовым импортом того пакета строк.