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

Применимо к:SQL Server

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

Примечание

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

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

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

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

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

    Примечание

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

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

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

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

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

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

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

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

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

    Примечание

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

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

Примечание

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

См. также раздел

Дальнейшие действия