Предварительные условия для минимального ведения журнала массового импорта данных
В базе данных, использующей модель полного восстановления, все операции вставки строк, выполняющиеся при массовом импорте, полностью записываются в журнал транзакций. Если используется модель полного восстановления, импорт большого количества данных может привести к быстрому заполнению журнала транзакций. При использовании простой модели восстановления или модели восстановления с неполным протоколированием минимальное протоколирование операций массового импорта, напротив, снижает вероятность того, что операция массового импорта заполнит все пространство журнала. Минимальное ведение журнала также более эффективно, чем полное.
Примечание |
---|
Модель восстановления с неполным протоколированием предназначена для временной замены модели полного восстановления на период проведения массовых операций. |
Требования к таблицам для минимального протоколирования операций массового импорта
Минимальное протоколирование требует, чтобы целевая таблица удовлетворяла следующим условиям.
В данный момент таблица не реплицируется.
Задана блокировка таблицы (с помощью TABLOCK).
Примечание Хотя операции вставки данных при минимальном ведении журнала операций массового импорта не регистрируются в журнале транзакций, компонент Компонент Database Engine по-прежнему ведет журнал выделения всех экстентов для таблицы.
Можно ли использовать минимальное ведение журнала, также зависит от того, индексируется ли таблица и, если это так, пуста ли она.
Если у таблицы нет индексов, ведется минимальный журнал страниц данных.
Если у таблицы нет кластеризованного индекса, но есть один или более некластеризованных индексов, всегда ведется минимальный журнал страниц данных. Однако применяемый способ ведения журнала страниц индекса зависит от того, пуста ли таблица.
Если таблица пуста, ведется минимальный журнал страниц индекса.
Если таблица не пуста, ведется полный журнал страниц индекса.
Примечание Если начать с пустой таблицы и выполнить массовый импорт данных несколькими пакетами, для первого пакета будет вестись минимальный журнал страниц как данных, так и индекса, но, начиная со второго пакета, минимальный журнал будет вестись только для страниц данных.
Если у таблицы есть кластеризованный индекс, и он пуст, будет вестись минимальный журнал и страниц данных, и страниц индекса. И наоборот, если у таблицы есть непустой кластеризованный индекс, будет вестись полный журнал и страниц данных, и страниц индекса независимо от модели восстановления.
Примечание Если начать с пустой таблицы и выполнить массовый импорт данных несколькими пакетами, для первого пакета будет вестись минимальный журнал и страниц данных, и страниц индекса, но, начиная со второго пакета, неполный журнал будет вестись только для страниц данных.
Примечание |
---|
Если включена репликация транзакций, операции BULK INSERT полностью протоколируются даже в модели с неполным протоколированием. |
Связанные задачи
[В начало]
См. также
Справочник
Табличные указания (Transact-SQL)
Инструкция INSERT (Transact-SQL)