Sql-Server

阻塞的會話等待 PAGELATCH_* 等待類型?

  • April 15, 2016

已編輯:為什麼會話報告被阻止但正在等待PAGELATCH_*,而不是LCK_M_相關的等待類型?

我之前假設 SQL Server 只會在 blocking_session_Id 列中報告阻塞會話。如果被阻止的會話正在等待邏輯鎖,而不是其他任何東西,例如PAGELATCH_*.

在此處輸入圖像描述

我之前假設 SQL Server 只會在 blocking_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 您可以在此處找到文件(部落格條目)。

引用自:https://dba.stackexchange.com/questions/116735