我遇到了当前架构的性能问题。所以我构建了一个等效的模式来解决这个问题。
我在两个模式上运行了一些测试,结果很难理解。为了记录,数据是相同的。
在对两个模式执行等效请求时,我从Profiler获得以下内容。
旧架构:
新架构:
差异似乎在于使用的查询计划。旧模式在查询计划中具有并行性。新架构没有使用并行性。
是否有人遇到类似情况(IO / CPU较少但执行时间较长)。你是怎么解决的?
有没有办法强制并行?我玩过查询提示(http://msdn.microsoft.com/en-us/library/ms18171)。我能够停止旧模式的并行性,但似乎不能在新模式上使用并行性查询。
提前致谢。
答案 0 :(得分:2)
路易斯
目前没有办法直接在SQL Server中强制并行,但Adam 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/
确保您具有适当的索引,并且还使用完整扫描更新统计信息。从长远来看,最好是Query Optimizer自己做出决定,但如果你想覆盖QO计划,那么你可能需要添加更多细节。架构,数据和复制。
HTH
答案 1 :(得分:2)