【问题标题】:SQL Server 2008 R2 - optimization issueSQL Server 2008 R2 - 优化问题
【发布时间】:2011-05-27 00:05:54
【问题描述】:

我遇到了当前架构的性能问题。所以我建立了一个等效的模式来解决这个问题。

我对这两种模式都进行了一些测试,结果很难理解。记录一下,数据是一样的。

在对两个模式执行等效请求时,我从 Profiler 获得以下信息。

旧架构:

  • 1,300,000 次读取
  • 5,000 CPU
  • 4 秒执行时间

新架构:

  • 30,000 次读取
  • 3,000 CPU
  • 6 秒执行时间

不同之处似乎在于使用的查询计划。旧模式在查询计划中具有并行性。新架构未使用并行性。

  1. 有没有人遇到过类似的情况(更少的 IO/CPU 但更多的执行时间)。你是怎么解决的?

  2. 有没有办法强制并行?我玩过查询提示(http://msdn.microsoft.com/en-us/library/ms18171)。我能够停止旧架构上的并行性,但似乎无法在新架构上查询使用并行性。

提前致谢。

【问题讨论】:

  • 索引是否相同?你重建它们了吗?您是否重新计算过统计数据?

标签: sql-server performance sql-server-2008


【解决方案1】:

路易斯,

目前没有办法直接在 SQL Server 中强制并行,但 Adam Machanic 做了一些工作来做到这一点。

http://whoisactive.com

关于您的第一个问题,是的,我们也看到过这样的案例。请注意,并行性受 cpu 限制,这就是为什么您会看到更多的 cpu 时间但总体上更少的执行时间,因为您有多个线程为您完成工作。

http://www.simple-talk.com/sql/learn-sql-server/understanding-and-using-parallelism-in-sql-server/

确保您有适当的索引,并且统计信息也通过全面扫描进行更新。从长远来看,最好是查询优化器自己做出决定,但如果您想覆盖 QO 计划,那么您可能需要添加更多细节。架构、数据和重现。

HTH

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    • 2011-12-14
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    相关资源
    最近更新 更多