Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql SSIS与DTS性能_Sql_Ssis_Odbc_Dts_Universe - Fatal编程技术网

Sql SSIS与DTS性能

Sql SSIS与DTS性能,sql,ssis,odbc,dts,universe,Sql,Ssis,Odbc,Dts,Universe,这么晚才这么做似乎很疯狂,但是 我正在用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个

这么晚才这么做似乎很疯狂,但是

我正在用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的转换都发生在SQL2005时代),我很好奇是否有更新鲜的信息

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


非常感谢您的帮助。

需要调查的一个选项是降低数据流中的缓冲区大小。默认情况下,它设置为10k行。如果您的数据源速度较慢,则可能需要相当长的时间来填满数据的“存储桶”,以便开始向目标发送一批信息。虽然这似乎有悖常理,但降低这个数字可以提高性能,因为5k、1k或100行数据会更快地填满存储桶。然后,当bucket 2、3等被填充时,该数据在数据流中被洗牌,并落在源中

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


有关这方面的详细信息,请参阅。

我对您仍在使用DTS表示哀悼;)也就是说,删除当前目标并将这些结果传输到脚本任务或其他可以充当数据接收器而不影响性能的任务可能会很有趣。我们的目标是了解SSI能够从您的源中提取数据的理论最大速率是多少。从服务器上运行N次以建立基线。如果它能和目的地的时间相比较,那会很有趣。。。我下一步要看的是,将缓冲区行数更改为较低的值是否会提高性能。这篇文章讨论了一种处理延迟的SQL Server源代码billinkc的方法。我不知道如何为此奖励您,但您是我今天的英雄,现在我带着胜利而不是失败的感觉去度周末!缩小缓冲区有点违反直觉,但这是一颗神奇的子弹。下周我将进行一些微调,但是将默认的10000行减少到10行,将一个包的执行时间从平均1小时减少到23分钟,相当于旧的DTS时间。太感谢你了!