Массовая вставка или 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
- BCP - это служебная программа: bcp.exe.
- 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), проблемы с производительностью могут не возникнуть.
Надеюсь это поможет.