Azure SQL Server中的批量插入或BCP

时间:2019-02-23 00:07:33

标签: azure azure-sql-database bulkinsert azure-sql-server

我正在尝试使用BULK插入和BCP将数据加载到Azure SQL服务器中。我能够将数据加载到表中而没有任何问题,但是加载性能是我的问题。在大多数情况下,BCP比批量插入要快。

BCP

将数据从UNIX加载到数据库

批量插入

通过BLOB存储将数据加载到Azure SQL Server

除了添加TABLOCK和删除/重新创建索引外,我想了解如何提高BULK插入性能。由于负载增加,无法删除和重新创建索引。

  

需要调整哪些参数以提高BULK INSERT性能?

2 个答案:

答案 0 :(得分:0)

将呼叫分批到远程服务是提高性能和可伸缩性的众所周知的策略。与远程服务的任何交互(例如序列化,网络传输和反序列化)都具有固定的处理成本。将许多单独的交易打包到一个批处理中可以最大程度地降低这些成本。

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

答案 1 :(得分:0)

  1. BCP是一个实用程序:bcp.exe。
  2. 批量插入是Transact-SQL语句。

bcp.exe使用大容量插入来完成其工作。

BCP和BULK INSERT实际上是不同的实现。从逻辑上讲,它们是等效的,或者至少应该是等效的。与批量插入相比,BCP的解析工作和成本更少。两者几乎相同,并且性能几乎相同。

如果要测试或比较它们的性能,它们必须在同一系统中并执行相同的操作:通过BLOB存储将数据文件加载到Azure SQL Server中或将数据文件加载到Azure SQL Server中。否则,您可能会得到错误的结果。

Azure SQL Server并没有专门介绍如何提高BULK INSERT性能。但是我认为,如果我们遵循文档BULK INSERT (Transact-SQL),则可能不会出现性能问题。

希望这会有所帮助。