在 SQL Server 2008 上运行作业时,我注意到 2 个 CPU 以 100% 运行,但另外 2 个只有 30% 左右。
我怎样才能分散负载并减少目前耗时超过 1 小时的作业时间?
它运行在带有 SAN 的 Windows Server 2008 -VmWare 上。32 位。~3.5GB 内存。
如果您需要更多信息,请询问。
答案1
如果不修改作业以便并行完成更多工作,即使您设法平衡负载,您的性能也可能变差。两个处于 100% 的 CPU 可能专用于两个并行流,移动它们会导致上下文切换和加载 CPU 内存缓存的额外开销。另外两个可能正在共享额外的负载,而前两个进程可能会造成瓶颈。
如果您可以增加作业并行运行的程度,您也许可以节省时间,但仍需要半个多小时。(当前运行时间 * 260/400 应该是最好的改进。)
在这种情况下,瓶颈很常见。如果你解决了一个瓶颈,你很可能会发现另一个瓶颈。
一些数据库问题可以通过修改相关查询来解决。鉴于 CPU 似乎是瓶颈,因此可能可以改进数据库代码。这将需要调整使用最多 CPU 的查询。对应用程序进行性能分析可能会产生有助于优化应用程序的信息。