Bearbeitet: Warum werden Sitzungsberichte blockiert, warten aber mit PAGELATCH_*
und nicht LCK_M_
verwandten Wartetypen?
Ich habe zuvor angenommen, dass SQL Server nur blockierende Sitzungen in der Spalte blockierende_Session_Id meldet. Wenn die blockierten Sitzungen auf eine logische Sperre warteten und nichts anderes wie a PAGELATCH_*
.
sql-server
sql-server-2014
optimization
locking
wait-types
Pixeliert
quelle
quelle
Antworten:
Sie verwenden die
sp_WhoIsActive
Prozedur von Adam Machanic , keine integrierte SQL Server-Funktion. Adams Verfahren meldet alle "interessanten" Ursachen für das Blockieren, nicht nur das Sperren von Sperren. Die zugrunde liegenden Informationen stammen aus verschiedenen Quellen, einschließlich sysprocesses , sys.dm_exec_requests und sys.dm_os_waiting_tasks .Eine Aufgabe kann neben einer Sperre auf andere Dinge warten. Es kann in der Lage sein, beispielsweise eine exklusive Sperre auf einer Zeile auf einer Seite zu erwerben, aber dann noch warten müssen , um eine exklusive Seite zu erwerben Riegel (weil andere Aufgaben die gleiche Seite in einem nicht kompatiblen Modus verriegelt haben).
In Ihrem Beispiel befinden sich die
PAGELATCH_EX
exklusiven Seiten-Latches auf regulären Daten- oder Indexseiten, nicht auf PFS-, GAM-, SGAM-, DCM- oder BCM-Seiten, wie durch (*) am Ende der wait_info angegeben .Die Dokumentation (Blogeinträge) finden Sie
sp_WhoIsActive
hier .quelle