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

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

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

Примечание.

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

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

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

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

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

    Примечание.

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

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

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

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

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

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

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

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

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

    Примечание.

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

  • Сведения о журналировании для кластеризованного индекса columnstore (CCI) см. в разделе Руководство по загрузке данных в индексы columnstore.

Примечание.

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

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