use*_*827 3 performance sql-server parallelism blocking waits performance-tuning
CXCONSUMER当我运行时,我有一些等待时间的查询,sp_whoisactive如下面的屏幕截图所示。
当我检查状态时,它是suspended。这意味着它正在等待某个进程释放资源。据我所知CXPACKET,生产者CXCONSUMER是消费者,而 CXPACKET 是罪魁祸首,应该对此采取行动。但我不”没有看到任何CXPACKET。由于这是一个并行执行,我不确定应该从哪里开始修复。
任何人都可以建议我如何找出我的查询正在等待的过程(因为我将挂起视为状态)?
附加信息
当我查询时sys.dm_os_wait_stats,前两个条目是 CONSUMER 和 CXPACKETS。
查看 Erik Darling 的这篇文章:CXCONSUMER 是无害的吗?没那么快,老虎
这显示了一个非常极端的问题查询示例,其中 CXCONUSMER 是最高等待时间。因此,虽然 Microsoft 的建议表明它是无害的,但它绝对可能是其他问题的迹象。
基于此以及您的屏幕截图,您很可能会遇到偏斜并行性问题。您可以从 Paul Randal 找到一些关于偏斜并行的重要信息:更多关于 CXPACKET 等待:偏斜并行
从理论上讲,由于倾斜并行性导致的等待应该作为 CXPACKET 等待出现。不过,目前在实践中似乎并非总是如此。
如果没有查询文本,尤其是实际的执行计划,我们只能猜测可能导致 CXCONSUMER 等待您的场景的原因。但希望这有助于为您提供一个方向。
如果您编辑问题以包含执行计划和查询文本(以及相关的表/索引定义),我们可以在追踪根本原因方面提供更多帮助。
| 归档时间: |
|
| 查看次数: |
655 次 |
| 最近记录: |