SQL Server 2008 R2 - 优化问题

问题描述:

我遇到了当前模式的性能问题。所以我构建了一个等效的模式来解决这个问题。SQL Server 2008 R2 - 优化问题

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

在两个模式上执行等效请求时,我从Profiler中获得以下内容。

旧模式:

  • 1300000读取
  • 5000 CPU
  • 4秒执行时间

新的模式:

  • 30000读取
  • 3000 CPU
  • 6秒执行时间

的区别似乎是在所使用的查询计划。旧的模式在查询计划中具有并行性。新模式不使用并行性。

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

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

在此先感谢。

+1

是指标一样吗?你重建了他们吗?你有重新统计的数据吗? – 2011-05-27 00:11:39

路易斯,

目前还没有办法强迫并行在SQL Server开箱,但亚当Machanic做了一些工作,虽然这样做。

http://sqlblog.com/files/folders/beta/entry29021.aspx

来到你的第一个问题,是的,我们已经看到了这样的情况了。请注意,Parallelism是cpu绑定的,这就是为什么你看到更多的CPU时间,但总体上更少的执行时间,因为你有多个线程为你工作。

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

确保您有到位正确的索引和统计还与全扫描更新。从长远来看,如果查询优化器自己做出决定是最好的,但如果您想覆盖QO计划,那么您可能需要添加更多的细节。架构,数据和repro。

HTH