gpt4 book ai didi

sql - SSIS 与 DTS 性能

转载 作者:行者123 更新时间:2023-12-01 01:08:26 24 4
gpt4 key购买 nike

在这么晚的日期这样做似乎很疯狂,但是......

我正在使用 Rocket Software UniVerse 源和 SQL 目标重建一些 ETL 基础设施。旧的目标平台是 Windows Server 2003 上的 SQL 2000,新平台是 Windows Server 2012 上的 SQL 2012。在这两种情况下,都使用 ODBC 驱动程序连接到源。在新平台上一切似乎都运行良好,但包的执行时间呈指数级变慢。例如,一个包含大约 130 万行和 28 列的表使用 SQL 2000/DTS 需要大约一个小时,使用 SQL 2012/SSIS 需要超过 3.5 小时。两台 SQL 服务器都在 Xen Server 上进行了虚拟化,2012 服务器有更多的 RAM 和更多的 vCPU,这两台机器在磁盘基础架构上都没有优势。在包执行期间,2012 服务器上没有任何指标(内存、磁盘 IO 等)是红线(甚至实际上接近)。

我已经阅读了几个描述相同场景的论坛帖子,但似乎没有一个真正适合我的解决方案。由于所有这些帖子都已经过时了(这些从 DTS 到 SSIS 的转换大部分发生在 SQL 2005 年),我很好奇是否有任何更新的信息。

这些包是非常简单的表副本,没有转换。我使用“SELECT column, column,.. FROM sourcetable”作为我的源连接和“Table or View - Fast Load”作为我的目的地。放缓似乎是在等式的源头,尽管我不能确定。

任何帮助表示赞赏。

最佳答案

研究的一种选择是降低数据流中的缓冲区大小。默认情况下,它设置为 10k 行。如果您的数据源速度较慢,则可能需要很长时间才能填满数据“存储桶”以开始向目的地发送一批信息。虽然这似乎违反直觉,但降低该数字可以提高性能,因为 5k、1k 或 100 行数据会更快地填满存储桶。然后,该数据在数据流中混洗,并在存储桶 2、3 等被填充时到达源。

如果你有一个 SQL Server 源,你可以通过暗示你想要一个快速的 N 行来优化你的查询,你会与你的 SSIS 包的行大小保持一致。

Rob Farley's article有关更多详细信息。

关于sql - SSIS 与 DTS 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16864195/

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