编辑:为什么会话报告被阻止但正在等待 PAGELATCH_*, , 并不是 LCK_M_ 相关的等待类型?

我之前假设 SQL Server 只会在blocking_session_Id 列中报告阻塞会话。如果被阻止的会话正在等待逻辑锁而不是其他任何东西,例如 PAGELATCH_*.

enter image description here

有帮助吗?

解决方案

我之前假设 SQL Server 只会在blocking_session_id 列中报告阻塞会话,如果阻塞会话正在等待逻辑锁而不是其他任何内容(例如 PAGELATCH_*.

您正在使用 Adam Machanic 的 sp_WhoIsActive 过程,而不是内置的 SQL Server 工具。Adam 的过程报告了所有“有趣”的阻塞原因,而不仅仅是锁阻塞。基础信息来自各种来源,包括 系统进程, sys.dm_exec_requests, , 和 sys.dm_os_waiting_tasks.

除了锁之外,任务还可以等待其他事物。例如,它可能能够获取页面上一行的排他锁,但仍然必须等待获取排他页面 闩锁 (因为其他任务以不兼容的模式锁定了同一页)。

在你的例子中, PAGELATCH_EX 独占页锁存器位于常规数据或索引页上,而不是 PFS、GAM、SGAM、DCM 或 BCM 页上,如页末尾的 (*) 所示 等待信息.

您可以找到以下文档(博客条目): sp_WhoIsActive 这里.

许可以下: CC-BY-SA归因
不隶属于 dba.stackexchange
scroll top