关于SOS_SCHEDULER_YIELD
使用时的问题sys.dm_os_wait_stats
:
不应该与等待类型signal_wait_time_ms
完全相同吗?wait_time_ms
SOS_SCHEDULER_YIELD
对于其他等待类型,信号等待是指工作线程在调度程序的可运行队列中等待。因此,我得出结论,信号等待应该与总等待时间(= wait_time_ms
)SOS_SCHEDULER_YIELD
相同sys.dm_os_wait_stats
。
所以我的问题是,对于这个特定的等待类型,提到的两列在这个 DMV 中应该具有相同的值。
更具体地说,我正在研究一个signal_wait_time_ms
大于 wait_time_ms
的情况,我想解释一下这种差异。
我正在查看的示例来自 Van de Laar 的《Pro SQL Server 2019 等待统计》一书。在第 120 页的屏幕截图中,对于SOS_SCHEDULER_YIELD
.
从(强调我的)的文档中:
sys.dm_os_wait_stats
如果您看到 signal_wait_time_ms 高于 wait_time_ms,那么根据当前文档,这是一个错误。如果它给您带来问题,您应该将其报告给 Microsoft,以便他们可以调查出问题的地方。可能是基础数据中的舍入错误导致了细微的差异(您没有提到这两个值相差多远)。
你这样说:
由于该示例来自书中的屏幕截图,因此编辑过程很可能导致无效信息使其成为最终发布的结果。在那种情况下,我不会太担心它。您可以联系作者,看看是否有可能发生这样的事情(也许他们为了简单起见将多个测试的屏幕截图拼接在一起)。