Предварительные требования для минимального ведения журнала в массовом импорте
Область применения: SQL Server
В базе данных, использующей модель полного восстановления, все операции вставки строк, выполняющиеся при массовом импорте, полностью записываются в журнал транзакций. Если используется модель полного восстановления, импорт большого количества данных может привести к быстрому заполнению журнала транзакций. В отличие от этого, в простой модели восстановления или модели восстановления с массовым ведением журнала минимальный объем операций массового импорта снижает вероятность того, что операция массового импорта заполняет пространство журнала. Минимальное протоколирование также более эффективно, чем полное.
Примечание.
Модель восстановления с неполным протоколированием предназначена для временной замены модели полного восстановления на период проведения массовых операций.
Требования к таблицам для операций массового импорта с минимальным ведением журнала
Минимальное протоколирование требует, чтобы целевая таблица удовлетворяла следующим условиям.
Таблица не реплицируется.
Задана блокировка таблицы (с помощью TABLOCK).
Примечание.
Хотя вставки данных не регистрируются в журнале транзакций во время минимальной операции массового импорта, ядро СУБД по-прежнему регистрирует выделения экстентов при каждом выделении новой экстенты в таблицу.
Таблица не оптимизирована для памяти.
Можно ли использовать минимальное протоколирование, также зависит от того, индексируется ли таблица и, если это так, пуста ли она.
Если у таблицы нет индексов, ведется минимальный журнал страниц данных.
Если у таблицы нет кластеризованного индекса, но есть один или более некластеризованных индексов, всегда ведется минимальный журнал страниц данных. Однако применяемый способ ведения журнала страниц индекса зависит от того, пуста ли таблица.
Если таблица пуста, ведется минимальный журнал страниц индекса. Если начать с пустой таблицы и выполнить массовый импорт данных несколькими пакетами, для первого пакета будет вестись минимальный журнал страниц как данных, так и индекса, но, начиная со второго пакета, минимальный журнал будет вестись только для страниц данных.
Если таблица не пуста, страницы индексов полностью регистрируются.
Если один из индексов имеет IGNORE_DUP_KEY = ON, страницы индексов и данных полностью регистрируются.
Если у таблицы есть кластеризованный индекс, и он пуст, будет вестись минимальный журнал и страниц данных, и страниц индекса. В отличие от этого, если таблица имеет кластеризованный индекс на основе дерева B и непуста, страницы данных и страницы индексов полностью регистрируются независимо от модели восстановления. Если начать с пустой таблицы rowstore и массового импорта данных в пакетных пакетах, индексные и страницы данных регистрируются минимально для первого пакета, но из второй пакетной службы только страницы данных записываются массово.
Примечание.
В документации термин B-tree обычно используется в ссылке на индексы. В индексах rowstore ядро СУБД реализует дерево B+. Это не относится к индексам columnstore или индексам в таблицах, оптимизированных для памяти. Дополнительные сведения см. в руководстве по архитектуре и проектированию индексов SQL Sql Server и Azure.
Дополнительные сведения о ведении журнала для кластеризованного индекса 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)