Оптимизация производительности массового импорта данных

Изменения: 12 декабря 2006 г.

В этом разделе описываются параметры оптимизации массового импорта данных в таблицу базы данных Microsoft SQL Server 2005 с помощью команды bcp, инструкции BULK INSERT или инструкции INSERT ... SELECT * FROM OPENROWSET(BULK...). Чтобы как можно быстрее массово импортировать или экспортировать данные, важно понимать, какие факторы влияют на производительность, а также, какие параметры команд доступны для управления ею. Используйте для массового импорта в SQL Server инструкцию Transact-SQL, где это возможно, так как Transact-SQL быстрее bcp.

ms190421.note(ru-ru,SQL.90).gifПримечание.
Сравнение этих методов см. в разделе Операции массового импорта и массового экспорта.

Техника улучшения производительности конкретного массового импорта зависит от влияния следующих факторов.

  • Есть ли в таблице ограничения или триггеры.
  • Модель восстановления, использующаяся базой данных.
    Дополнительные сведения см. в разделе Обзор моделей восстановления.
  • Пуста ли таблица, в которую копируются данные.
  • Есть ли в этой таблице индексы.
  • Задана ли подсказка TABLOCK.
  • Копируются ли данные через один клиент или через несколько клиентов параллельно.
  • Копируются ли данные между двумя компьютерами, на которых запущены экземпляры SQL Server.
ms190421.note(ru-ru,SQL.90).gifВажно!
В SQL Server 2005 оптимизация массового импорта применяется в тех случаях, когда включено выполнение триггеров. SQL Server 2005 использует управление версиями строк для триггеров и сохраняет их в хранилище версий в базе данных tempdb. Прежде чем производить массовый импорт большого пакета записей данных с использованием триггеров, может потребоваться расширить базу данных tempdb с учетом возросшей потребности в емкости хранилища версий.

Сведения о том, как эти факторы влияют на сценарии массового импорта, см. в разделе Рекомендации по оптимизации массового импорта данных.

Способы оптимизации массового импорта

SQL Server предоставляет следующие способы ускорения массового импорта данных.

  • Минимальное ведение журнала
    В простой модели восстановления массовые операции производятся с минимальным протоколированием.
    В базе данных, использующей полную модель восстановления, все операции вставки строк, выполняющиеся во время массового импорта, полностью записываются в журнал транзакций. Во время импорта большого количества данных это может привести к быстрому заполнению журнала транзакций. Для операций массового импорта минимальное ведение журнала более эффективно, чем полное, поскольку снижает вероятность того, что во время массового импорта журнал будет переполнен. Чтобы выполнять операции массового импорта с минимальным протоколированием в базе данных, которая обычно использует полную модель восстановления, ее можно сначала переключить на модель восстановления с неполным протоколированием, а после выполнения массового импорта данных снова переключить на полную модель восстановления. Дополнительные сведения см. в разделе Особенности переключений между моделью полного восстановления и моделью восстановления с неполным протоколированием.
    ms190421.note(ru-ru,SQL.90).gifПримечание.
    Протоколирование вставки строк минимально только в том случае, если неполное протоколирование применимо. В противном случае вставка строк в журнале транзакций будет протоколироваться полностью. Сведения о том, когда ведется журнал операций массового импорта и как следует выполнять эти операции с минимальным протоколированием, см. в разделах Операции с минимальным протоколированием и Предварительные условия для минимального ведения журнала массового импорта данных.
  • Параллельный импорт данных из нескольких клиентов в одну таблицу
    SQL Server разрешается параллельный массовый импорт данных в одну таблицу из нескольких клиентов. Все три механизма массового импорта поддерживают параллельный импорт данных. Это может повысить производительность операций импорта данных.
    Дополнительные сведения см. в разделе Параллельный импорт данных с блокировкой на уровне таблицы.
  • Использование пакетов
    Сведения об использовании пакетов при импорте данных и о параметрах команд для управления пакетами см. в разделе Управление пакетами для массового импорта данных.
    ms190421.note(ru-ru,SQL.90).gifПримечание.
    Параметр BULK предложения OPENROWSET не поддерживает управление размером пакета.
  • Отключение триггеров
    Отключение триггеров может повысить производительность.
    Дополнительные сведения о влиянии выполнения триггеров на операции массового импорта и о том, как включать и отключать триггеры, см. в разделе Управление выполнением триггеров при массовом импорте данных.
  • Отключение ограничений
    Сведения о том, как проверка ограничений воздействует на операцию массового импорта, и о том, как включать и отключать ограничения CHECK и FOREIGN KEY таблицы, см. в разделе Управление проверкой ограничений при операциях массового импорта.
  • Упорядочение данных в файле данных
    По умолчанию, при операции массового импорта подразумевается, что данные не отсортированы. Если в таблице есть кластеризованный индекс, программа bcp и инструкция BULK INSERT позволяют указать сортировку данных во время операции массового импорта. Данные в файле данных необязательно должны быть отсортированы в том же порядке, что и данные таблицы. Однако можно улучшить производительность массового импорта, если указать то же упорядочение для файла данных, что и в таблице.
    Дополнительные сведения см. в разделе Управление порядком сортировки во время массового импортирования данных.
    ms190421.note(ru-ru,SQL.90).gifПримечание.
    Инструкции INSERT ... SELECT * FROM OPENROWSET(BULK...) не поддерживают управление порядком сортировки.
  • Управление поведением блокировок
    Сведения о том, как указать поведение блокировок во время операций массового импорта, см. в разделе Управление блокировкой при массовом импорте.
  • Импорт данных в собственном формате
    Дополнительные сведения см. в разделах Использование собственного формата для импорта и экспорта данных и Использование собственного формата Юникода для импорта или экспорта данных.

См. также

Справочник

SQL Server, объект Databases

Основные понятия

Массовый импорт и экспорт данных

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

12 декабря 2006 г.

Измененное содержимое
  • Обновлен материал об отключении ограничений, что позволяет одновременно включать и выключать ограничения CHECK и FOREIGN KEY.