gpt4 book ai didi

ssis - 要加载到 Azure SQL DW 中的暂存表的最佳 SSIS 数据流设置

转载 作者:行者123 更新时间:2023-12-04 11:49:31 26 4
gpt4 key购买 nike

我有一个 350MB 的表,相当宽,有两个 varchar(2000) 列。通过 SSIS 数据流,通过 OLEDB“快速加载”目标加载到 Azure SQL DW 需要 60 分钟。我将该数据流上的目标更改为 Azure Blob 目标(来自 SSIS Azure feature pack),并且相同的数据流在 1.5 分钟内完成(来自新平面文件的 Polybase 大约需要 2 分钟)。

对于另一个来源,我有一个现有的 1GB 平面文件。 SSIS 数据流入 Azure SQL DW 中的 OLEDB 目标需要 90 分钟。将文件复制到 Blob 存储,Polybase 加载需要 5 分钟。

SSIS 是 SSIS 2014,它在与 Azure SQL DW 相同区域的 Azure VM 上运行。我知道批量加载比 Polybase 慢得多,因为批量加载通过控制节点漏斗,但 Polybase 在所有计算节点上并行化。但是这些批量加载数字非常慢。

为了通过批量加载尽可能快地加载到 Azure SQL DW 阶段表,SSIS 数据流和目标的最佳设置是什么?除了我没有考虑的任何其他设置之外,我特别对以下设置的最佳值感兴趣:

  • Stage table geometry = HEAP(我认为是最快的)
  • 数据流设置:
  • DefaultBufferMaxRows = ?
  • 默认缓冲区大小 = ?
  • OLEDB 目标设置
  • 数据访问模式 = 表或 View - 快速加载
  • 保持身份 = 未选中
  • 保留空值 = ?
  • 表锁=?
  • 检查约束 = ?
  • 每批行数 = ?
  • 最大插入提交大小 = ?
  • 最佳答案

    Polybase 无疑是加载到 SQL DW 的最快方式。您建议的 HEAP 也是最快的目标类型。在 best practices for loading to Clustered Columnstore using SSIS 上查看 SQL CAT 团队的这篇文章.这里工程团队的建议是尝试调整 DefaultBufferMaxRows(默认为 10K)、DefaultBufferSize(默认为 10MB)、Rows per batch 和 Maximum insert commit size。

    许多年前,我对我们内部部署的 Azure SQL 数据仓库(PDW,也称为并行数据仓库或 APS,设备平台系统)进行了大量的 SSIS 性能测试。在那次测试中,我经常发现本地 CPU 是瓶颈,特别是单核。如果您按内核监视 CPU 利用率,则可以使用 Perfmon 清楚地看到这一点。

    我可以做一些事情来提高吞吐量。如果您在单个内核上受 CPU 限制,运行多个并发 SSIS 包将使您能够利用更多内核并运行得更快。为此,您需要将源文件分成多个文件,并且目标文件应该是多个表。如果对目标表进行分区并且每个加载包含不同的分区,则可以在加载数据后使用分区切换,以便将其合并到单个表中。

    您也可以尝试在您的包中创建多个数据流,这将实现与并行运行多个 SSIS 加载器相同的性能,但我相信您仍然需要将源文件分解为多个文件以及目标、多个表以最大化吞吐量。

    我尝试的另一种方法是在一个数据流中使用并行加载器。虽然这比一个加载器快,但它比我上面提到的前两种方法慢。

    我还发现,如果我让 SSIS 进行字符到二进制字符的转换,这会加快加载速度。此外,使用 SQL 源比使用文本文件作为源更快。

    您可以尝试的另一件事是 SSIS Balanced Data Distributor . BDD 是另一种在源系统上利用多个内核而无需运行多个并发 SSIS 包的方法。

    当您运行 SSIS 包时,请使用 perfmon 监控 CPU,以查看您是在单个内核上运行还是分布在多个内核上。如果您使用的是单个内核,那么这很可能是您的瓶颈。

    另外,关于 VARCHAR(2000) 列。如果您并不真正希望传入的数据具有此大小,请减少 VARCHAR 列的大小。虽然我们将来会改进这种行为,但目前我们的数据移动服务会将您的 VARCHAR 数据填充到固定长度。这当然意味着如果最宽值远小于 2000 个字符,则移动的数据比需要的多。

    我希望这有帮助。

    关于ssis - 要加载到 Azure SQL DW 中的暂存表的最佳 SSIS 数据流设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36052745/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com