首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSIS与DTS性能的对比

问SSIS与DTS性能的对比
EN

Stack Overflow用户
提问于 2013-06-01 03:08:19
回答 1查看 1.1K关注 0票数 4

在这么晚的时候这么做似乎很疯狂,但是...

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

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

这些包是非常简单的表副本,没有转换。我的源连接使用"SELECT column,column,.. FROM source source“,目标连接使用”Table or View - Fast Load“。虽然我不能确定,但速度减慢似乎是在方程式的源端。

感谢您的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-01 08:44:25

要研究的一个选项是降低数据流中的缓冲区大小。默认情况下,它被设置为10k行。如果您有一个速度很慢的数据源,可能需要相当长的时间才能填满数据的“桶”,才能开始将一批信息发送到目的地。虽然这看起来可能有悖常理,但降低这个数字可以提高性能,因为5k、1k或100行数据会更快地填满存储桶。然后,当存储桶2、3等被填充时,数据在数据流中进行混洗,并到达源中。

如果您有一个SQL Server源,您可以通过提示您想要一个快速的N行来优化您的查询,您将与您的SSIS包的行大小对齐。

有关这方面的更多详细信息,请参阅Rob Farley's article。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16864195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档