Prerequisites for Minimal Logging in Bulk Import

Применимо к: даSQL Server (все поддерживаемые версии)

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

Примечание

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

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

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

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

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

    Примечание

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

  • Таблица не является оптимизированной для памяти.

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

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

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

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

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

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

  • Дополнительные сведения о ведении журнала для кластеризованного индекса columnstore см. в руководстве по загрузке данных индекса columnstore.

Примечание

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

См. также:

Модели восстановления (SQL Server)
bcp Utility
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
BACKUP (Transact-SQL)
ALTER DATABASE (Transact-SQL)
Табличные указания (Transact-SQL)
INSERT (Transact-SQL)