【问题标题】:Bulk Insert or BCP in Azure SQL ServerAzure SQL Server 中的批量插入或 BCP
【发布时间】:2019-07-17 03:00:24
【问题描述】:

我正在尝试使用 BULK Insert 和 BCP 将数据加载到 Azure SQL 服务器。我能够毫无问题地将数据加载到我的表中,但加载性能是我的问题。在大多数情况下,BCP 比 BULK Insert 更快。

BCP

将数据从 UNIX 加载到数据库

批量插入

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

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

为了提高 BULK INSERT 性能,需要调整哪些参数?

【问题讨论】:

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


    【解决方案1】:

    批量调用远程服务是提高性能和可扩展性的众所周知的策略。与远程服务的任何交互都有固定的处理成本,例如序列化、网络传输和反序列化。将许多单独的交易打包成一个批次可以最大限度地降低这些成本。

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

    【讨论】:

      【解决方案2】:
      1. BCP 是一个实用程序:bcp.exe。
      2. BULK INSERT 是一个 Transact-SQL 语句。

      bcp.exe 使用 BULK INSERT 来完成它的工作。

      BCP 和 BULK INSERT 实际上是不同的实现。从逻辑上讲,它们是等价的,或者至少应该是等价的。 BCP 的解析工作量和成本低于 BULK INSERT。两者几乎相同,性能也几乎相同。

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

      Azure SQL Server 没有具体说明如何提高 BULK INSERT 性能。但我认为如果我们按照BULK INSERT (Transact-SQL) 的文档进行操作,可能不会出现性能问题。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 2017-11-30
        • 1970-01-01
        • 1970-01-01
        • 2010-09-24
        • 1970-01-01
        • 1970-01-01
        • 2021-12-05
        • 1970-01-01
        相关资源
        最近更新 更多