Предварительные условия для минимального ведения журнала массового импорта данных
Минимальное ведение журнала операции массового импорта возможно только при использовании модели восстановления с неполным протоколированием или простой модели восстановления. В базе данных, использующей модель полного восстановления, все операции вставки строк, выполняющиеся при массовом импорте, полностью записываются в журнал транзакций. Если используется модель полного восстановления, импорт большого количества данных может привести к быстрому заполнению журнала транзакций. Напротив, минимальное ведение журнала снижает вероятность того, что во время операции массового импорта будет заполнено все пространство журнала. Минимальное ведение журнала также более эффективно, чем полное. Оно требует, чтобы база данных использовала или модель восстановления с неполным протоколированием (если обычно в базе данных используется модель полного восстановления) или простую модель восстановления.
Примечание. |
---|
Сведения о переключении между моделью полного восстановления и моделью восстановления с неполным протоколированием см. в разделе Особенности переключений между моделью полного восстановления и моделью восстановления с неполным протоколированием. |
Требования к таблицам при минимальном ведении журнала
Минимальное ведение журнала требует, чтобы целевая таблица удовлетворяла следующим условиям.
- В данный момент таблица не реплицируется.
- Задана блокировка таблицы (с помощью TABLOCK).
Дополнительные сведения см. в разделе Управление блокировкой при массовом импорте.
Примечание. |
---|
Хотя при минимальном ведении журнала вставки данных операции массового импорта в журнале транзакций не регистрируются, компонент Database Engine по-прежнему ведет журнал всех выделений экстентов для таблицы. |
Индексы в таблицах
Можно ли использовать минимальное ведение журнала, также зависит от того, индексируется ли таблица и, если это так, пуста ли она.
- Если у таблицы нет индексов, ведется минимальный журнал страниц данных.
- Если у таблицы нет кластеризованного индекса, но есть один или более некластеризованных индексов, всегда ведется минимальный журнал страниц данных. Однако то, как ведется журнал страниц индекса, зависит от того, пуста ли таблица.
- Если таблица пуста, ведется минимальный журнал страниц индекса.
- Если таблица не пуста, ведется полный журнал страниц индекса.
Примечание. Если начать с пустой таблицы и массово импортировать данные несколькими пакетами, для первого пакета будет вестись минимальный журнал и страниц данных, и страниц индекса, но, начиная со второго пакета, минимальный журнал будет вестись только для страниц данных. - Если у таблицы есть кластеризованный индекс и он пуст, будет вестись минимальный журнал и страниц данных, и страниц индекса.
И наоборот, если у таблицы есть непустой кластеризованный индекс, будет вестись полный журнал и страниц данных, и страниц индекса, независимо от модели восстановления.Примечание. Если начать с пустой таблицы и массово импортировать данные несколькими пакетами, для первого пакета будет вестись минимальный журнал и страниц данных, и страниц индекса, но, начиная со второго пакета, неполный журнал будет вестись только для страниц данных.
Дополнительные сведения, в том числе сводную таблицу поведения при блокировке и ведении журнала во время массового импорта, см. в разделе Оптимизация производительности массового импорта данных.
Рекомендация При использовании модели восстановления с неполным протоколированием для импорта большого набора строк таблицы, рекомендуется распределить массовый импорт по нескольким пакетам. Каждый пакет соответствует одной транзакции. Поэтому по завершении пакета можно создать резервную копию его журнала. Следующая резервная копия журнала повторно использует место, занимавшееся массовым импортом того пакета строк.
См. также
Основные понятия
Выбор модели восстановления для базы данных
Другие ресурсы
Программа bcp
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
BACKUP (Transact-SQL)
ALTER DATABASE (Transact-SQL)
SuspendIndexing Property
UseBulkCopyOption Property