使用 PAGELATCH_* 等待类型等待的阻塞会话?

Pix*_*ted 9 sql-server optimization locking wait-types sql-server-2014

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

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

在此处输入图片说明

Pau*_*ite 6

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

您使用的是 Adam Machanic 的sp_WhoIsActive过程,而不是内置的 SQL Server 工具。Adam 的过程报告了所有“有趣”的阻塞原因,而不仅仅是锁阻塞。底层信息来自各种来源,包括sysprocessessys.dm_exec_requestssys.dm_os_waiting_tasks

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

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

您可以在sp_WhoIsActive 此处找到文档(博客条目)。