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

Область применения: SQL Server

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

Примечание.

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

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

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

  • Таблица не реплицируется.

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

    Примечание.

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

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

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

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

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

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

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

    • Если один из индексов имеет IGNORE_DUP_KEY = ON, страницы индексов и данных полностью регистрируются.

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

    Примечание.

    В документации термин B-tree обычно используется в ссылке на индексы. В индексах rowstore ядро СУБД реализует дерево B+. Это не относится к индексам columnstore или индексам в таблицах, оптимизированных для памяти. Дополнительные сведения см. в руководстве по архитектуре и проектированию индексов SQL Sql Server и Azure.

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

Примечание.

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

См. также

Следующие шаги