如何提高2005年运行良好的SSIS 2008包的更新性能?

问题描述:

我正在将我的数据仓库从SQL Server 2005迁移到SQL Server 2008。桌面更新有很大的性能下降。插入工作很好。如何提高2005年运行良好的SSIS 2008包的更新性能?

我在两种环境中都使用相同的SSIS包,但2008仍然没有更新权限。

我已经在所有表上运行了更新统计数据。该进程使用临时表。我删除了所有索引(除了更新所需的索引之外),但这些措施都没有帮助。我还写了一个模拟SSIS正在做什么的更新声明,并且它按预期运行得很快。

更新过程使用数据流任务(在该任务中还有其他内容,例如插入到processed表中以了解更新中使用的数据)。

这是一个全新的数据库,没有别的东西在上面运行。有什么建议么?

捕获统计IO

  • 2005,CPU = 0,读取= 150
  • 2008,CPU 1700,读取= 33000

数据库RAM:

  • 2005 ,40GB Total/18 Sql Server
  • 2008 128GB Total/110GB Sql Server
+0

感谢链接@Siva。我已经在使用登台表了,我不想重写这个过程,因为问题似乎不仅仅是这张表。解决方案中是否还有其他解决方案,我错过了这可以提供帮助? +1在你的答案,这是非常彻底的。 – jabs 2013-02-12 19:29:45

+2

捕获并比较您的实际执行计划。 SSMS版本和软件包版本可能不同? – billinkc 2013-02-12 19:31:02

+0

@billinkc - 有一定的差异。在2005年,CPU = 0,读取= 150; 2008年,CPU = 1700,读取= 33,000。所以肯定有一些东西。任何建议,而我期待呢? – jabs 2013-02-12 19:51:56

该问题发现在执行计划中。 2008年的计划是使用不同的表格构建更新声明。背景:由于我们使用的索引视图在查询这些表时不允许任何其他访问,因此我们构建了iView使用的较小/精简表,而不是我们的维度,以使其可供用户使用。优化器选择这些表而不是我们在查询中指定的那些表。

当我最初做解释计划时,我使用了错误的查询,它没有这个功能。这使所有的区别。

谢谢!

+0

感谢您回来并解释!不过,你应该接受这个答案。 – 2013-02-12 22:07:58

+0

我会,但我必须等待2天。 – jabs 2013-02-12 22:09:17