如何解决SSIS与DTS的性能
一种研究的选择是减小数据流中的缓冲区大小。默认情况下,它设置为1万行。如果您的数据源速度较慢,则可能需要花费相当长的时间来填充数据的“存储桶”,才可以开始 向目标发送一批信息。尽管这似乎违反直觉,但降低该数字可以提高性能,因为5k或1k或100行数据可以更快地填充存储桶。然后,这些数据在数据流中被重新整理,并在填充存储桶2、3等时降落在源中。
如果您有sql Server源,则可以通过提示您想要快速的N行来优化查询,该行将与SSIS包的行大小对齐。
解决方法
似乎在这么晚的时候这样做很疯狂,但是…
我正在使用Rocket Software UniVerse源和SQL目标重建一些ETL基础结构。旧的目标平台是Windows Server
2003上的SQL 2000,新的平台是Windows Server
2012上的SQL2012。在两种情况下,都使用ODBC驱动程序连接到源。一切似乎都可以在新平台上正常运行,但包的执行时间却成倍降低。例如,使用SQL
2000 / DTS大约有130万行和28列的一张表大约需要一个小时,而使用SQL 2012 / SSIS大约需要3.5个小时。这两台SQL服务器都在Xen
Server上进行了虚拟化,2012服务器具有更多的RAM和更多的vCPU,这两种计算机在磁盘基础结构方面都没有优势。包执行期间,2012年服务器上没有指标(内存,磁盘IO等)出现红线(或什至实际上接近)。
我已经阅读了多个描述相同场景的论坛帖子,但似乎没有一个真正适合我的解决方案。由于所有这些帖子都是过时的(大多数从DTS到SSIS的转换都发生在SQL
2005的日子里),所以我很好奇是否有任何新鲜的信息。
这些包是非常简单的表副本,没有任何转换。我在源连接中使用“ SELECT列,列,.. FROM源表”,而在目的地中使用“表或视图-
快速加载”。尽管我不确定,但将APPEARS放慢是在等式的源头。
任何帮助表示赞赏。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。