何时更改并行性的成本阈值


10

在检查性能问题时,我发现大量涌入的CXPACKETS暗示我可能需要研究并行度的成本阈值,也许还需要考虑MAXDOP。

在对MAXDOP进行任何重大更改之前,我已经遵循许多其他人的建议,包括@mrdenny在SQL Server 2008的CXPACKET Waits性能调整中的建议以及@ aron-Bertrand在处理CXPACKET等待中的答案-设置成本阈值用于并行性。我已添加维护,以每晚更新一次完整的统计信息。这感觉就像是明智之举。

但是,修改成本阈值仍然让我感到困惑。

在什么时候应该更改并行性的成本阈值?是否有人举了一个例子(在检查了查询和工作负载的成本之后)他们对该成本进行了更改?

抱歉,是否已在上一个问题中得到了解答。

谢谢!

Answers:


3

使用MAXDOP = 1会有所帮助,但这是一门大手笔。实际的问题可能是索引的实用性。也许新的索引或其他索引可以解决该问题。

遵循丹尼先生和亚伦·伯特兰先生的评论,您是否发现与此相关的其他等待可能是CXPACKET等待的原因?

乔纳森·凯海耶斯(Jonathan Kehayias)提出了一个查询,可以帮助您评估并行性经验并做出更周到的决定。但是,您还应该阅读乔纳森和保罗·怀特之间的对话。

https://www.sqlskills.com/blogs/jonathan/tuning-cost-threshold-for-parallelism-from-the-plan-cache/


1

我建议您先研究一下MAXDOP设置,因为默认设置0(使用所有可用线程)可能很危险,因为消耗所有可用线程的失控查询将导致线程饥饿。

有关如何计算服务器实例的MAXDOP设置,请参阅此处的答案。

并行性的成本阈值是指优化程序考虑并行性之前的最低查询成本。

提醒CXPACKET等待只是症状,原因是与查询相关的某些错误-统计数据过时或索引缺失,从而导致错误的计划或不同的计划。

您可以使用sys.dm_exec_cached_plans,并sys.dm_exec_query_plan在描述从计划缓存DMV的矿山信息优化“成本门槛并行”从计划缓存由乔纳森和 成本阈值的并行

我建议保留cost threshold for parallelism默认值,除非您用尽了资源来优化查询,维护索引和统计信息以及检查是否没有丢失的索引以使查询受益。

注意:Maxdop设置也可以应用在查询级别,使用OPTION (MAXDOP n)该设置将覆盖服务器范围的设置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.