我正在处理的数据处理系统有一些性能问题。我收集了一个小时的等待状态,显示了大量的CXPACKET和LATCH_EX等待事件。
该系统由3个处理SQL服务器组成,进行大量的数据处理和计算,然后将数据输入中央集群服务器。处理服务器可以有多达6个作业,每个作业在任何时候运行。这些等待状态是中心星系团的数据,我认为这是造成瓶颈的原因。中央集群服务器有16个核心和64 16内存。MAXDOP设置为0。
我猜CXPACKET来自运行的多个并行查询,但是我不确定LATCH_EX等待事件所指示的是什么。据我所知,这可能是一个非缓冲的等待?
有人能建议这种等待的原因是什么吗?我应该采取什么行动来调查这个性能问题的根本原因?
最上面的查询结果是等待状态的总数,底部的查询结果是1小时内的状态。

发布于 2017-05-24 08:50:24
CXPACKET可以与LATCH_XX (可能还包括PAGEIOLATCH_XX或SOS_SCHEDULER_YIELD )一起使用。如果是这样的话(基于这个问题,我相信是这样的),那么MAXDOP值应该降低以适应您的硬件。
此外,以下是诊断高CXPACKET等待状态值的原因的一些更多建议步骤(在更改Server上的某些内容之前):
如果您真的需要深入了解CXPACKET等待类型,我建议您阅读服务器中CXPACKET等待类型的故障排除文章
发布于 2014-03-06 13:33:32
阅读在服务器上诊断和解决Latch争用,是关于这一主题的最全面的论文。您必须深入研究sys.dm_os_latch_stats,看看争用的锁存类型是什么。
看看阅读如何分析Server的性能是否对你有任何帮助。
发布于 2014-03-06 14:29:34
除了阅读上面提供的链接(很可能会将“最大并行度”设置从0更改为8 )之外,您还需要缩小查询的并行性以及它们的成本。
在看到这一变化的影响之后,您还可以考虑修改您的“并行性成本阈值”,以微调将并行的内容。
以下是布伦特·奥扎尔的一段很棒的视频,它将对你有帮助:掌握CXPACKET和MAXDOP的艺术
您的目标是为CXPACKET提供50%的等待时间。好运!!
https://dba.stackexchange.com/questions/60279
复制相似问题