Массовая вставка или BCP в Azure SQL Server

Я пытаюсь загрузить данные в SQL-сервер Azure, используя BULK Insert и BCP. Я могу загрузить данные в свою таблицу без каких-либо проблем, но производительность загрузки является проблемой в моем случае. BCP в большинстве случаев быстрее, чем BULK Insert.

BCP

Загрузка данных из UNIX в базу данных

БОЛЬШАЯ ВСТАВКА

Загрузка данных в Azure SQL Server через хранилище больших двоичных объектов

Я хотел бы знать, как улучшить производительность BULK Insert, кроме добавления TABLOCK и удаления / воссоздания индекса. Удаление и воссоздание индекса невозможно из-за дополнительных нагрузок.

Какие параметры нужно настроить для улучшения производительности BULK INSERT?

2 ответа

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

https://docs.microsoft.com/en-us/azure/sql-database/sql-database-use-batching-to-improve-performance

  1. BCP - это служебная программа: bcp.exe.
  2. BULK INSERT - это оператор Transact-SQL.

bcp.exe использует BULK INSERT для своей работы.

BCP и BULK INSERT на самом деле разные реализации. Логически они эквивалентны или, по крайней мере, должны быть. BCP имеет меньше усилий по анализу и затрат, чем BULK INSERT. Оба практически одинаковы и дают почти одинаковую производительность.

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

В Azure SQL Server не указано, как улучшить производительность BULK INSERT. Но я думаю, что если мы будем следовать документу BULK INSERT (Transact-SQL), проблемы с производительностью могут не возникнуть.

Надеюсь это поможет.

Другие вопросы по тегам