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

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

BCP

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

НАСОСНАЯ ВСТАВКА

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

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

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


person Jo.........    schedule 23.02.2019    source источник


Ответы (2)


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

https://docs.microsoft.com/en-us/azure/sql-database/sql-database-use-batching-to-improve-performance#why-is-batching-important-for-sql-database

person Ken W MSFT    schedule 23.02.2019

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

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

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

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

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

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

person Leon Yue    schedule 25.02.2019