the*_*ony 10 performance sql-server
在检查性能问题时,我看到 CXPACKETS 的大量涌入,这表明我可能需要查看并行性和 MAXDOP 的成本阈值。
在对 MAXDOP 进行任何重大更改之前,我遵循了许多其他人的建议,包括 @mrdenny 在对 SQL Server 2008 的 CXPACKET 等待性能调整的回答中的建议和@aron-Bertrand 在处理 CXPACKET 等待中的回答- 设置成本阈值对于并行性。我已添加到维护中,以每晚完全更新统计数据。感觉这是一个明智的举动。
但是,对成本阈值进行修改仍然让我烦恼。
并行性的成本阈值应该在什么时候改变?有没有人有一个例子来说明(在检查了他们的查询和工作量的成本之后)他们对这个成本进行了更改?
如果这是在上一个问题中已回答的问题,请道歉。
谢谢!
我建议您首先查看 MAXDOP 设置,因为默认设置 0(使用所有可用线程)可能很危险,因为消耗所有可用线程的失控查询将导致线程匮乏。
\n\n请参阅我的答案,了解如何计算服务器实例的 MAXDOP 设置。
\n\n并行成本阈值是指优化器考虑并行性之前的最低查询成本。
\n\n请记住,CXPACKET 等待只是由于与查询相关的错误而导致的症状 - 过时的统计信息或丢失索引导致错误或不同的计划。
\n\n您可以使用sys.dm_exec_cached_plans和sys.dm_exec_query_planDMV 从计划缓存中挖掘信息,如Jonathan 的 Tuning \xe2\x80\x98cost Threshold forparallelism\xe2\x80\x99 from the Plan Cache和Cost Threshold for Parallelism中所述。
我建议保留cost threshold for parallelism默认值,除非您已耗尽资源调整查询、维护索引和统计信息以及检查是否没有任何丢失的索引,您的查询可能会受益。
注意:Maxdop 设置也可以应用于查询级别,使用OPTION (MAXDOP n)它将覆盖服务器范围的设置。
| 归档时间: |
|
| 查看次数: |
9159 次 |
| 最近记录: |