0

我对 Sql Server 2008 R2 中的 SSIS 包有一个非常奇怪的性能问题。这是事实:最近我们从 Sql Server 2005(在 Windows Server 2003 R2 32 位上)迁移到 Sql Server 2008 R2(在 Windows Server 2008 R2 64 位上)。

除了一个 SSIS 包的一些性能问题外,一切似乎都很好。如果我从我的 PC 上运行它,它会在几分钟内(大约 4/5)运行良好,如果我通过 SqlServer Management Studio 连接到集成服务并从那里启动包,似乎也会发生同样的情况。

但是,当我从 Sql Server Agent 运行它时,我的执行时间从 5 分钟到超过 1 小时不等……旧服务器没有这样的问题!我还尝试在 32 位模式下运行该包,在某些运行中它似乎更快,但它非常随机......但是它从未达到它在 Sql Server 2005 上的良好性能。

我不知道......最初我认为这是一个内存问题,因为我没有给 Sql Server 提供最大内存限制,并且其他一些包同时运行有问题,所以我扩展了服务器使用的 RAM(它在 VMWare 上运行),现在机器有 8GB 的​​ RAM,Sql Server 的最大服务器内存为 4GB。另一个包现在没有崩溃,但这仍然给随机执行时间......

有什么猜测吗?

按照天的执行时间表

Start Time          Execution Time
12/17/2010 06:15 00:49:43
12/16/2010 17:54 01:12:26
12/16/2010 17:18 00:06:29
12/16/2010 16:53 00:05:23
12/16/2010 16:10 00:24:23
12/16/2010 06:15 00:19:26
12/15/2010 06:15 00:07:19
12/14/2010 06:15 00:11:26
12/13/2010 06:15 00:17:30
12/12/2010 06:15 00:44:59
12/11/2010 06:15 00:11:59
12/10/2010 06:15 00:34:19
4

2 回答 2

1

还有什么在运行?在计划运行此程序包时,您是否有用户运行查询(可能锁定表)或其他程序包接触相关表?当您运行它时,您是否看到阻塞锁或其他类似的东西?

对我来说,生产批处理执行环境更有可能不如您的开发环境那么好、安静和可控。

持有数据锁的用户或相关包可能会解释执行时间的随机分布。

于 2010-12-17T09:42:25.500 回答
1

我找到了解决方案。

问题是服务器上创建缓冲区的内存问题。

我部分解决了它增加了默认缓冲区大小(以 MB 和行数为单位)并完全解决了它删除了我使用的所有排序和合并组件,将它们替换为使用转换缓存组件构建的自定义缓存上的查找。

我仍然不明白为什么 Sql Server 2005 与 Windows Server 2003 和开发中的分配工作正常,但是现在包已修复!

于 2011-02-17T16:04:36.923 回答