Modifié: Pourquoi les sessions signalant sont-elles bloquées mais attendent avec des types d'attente PAGELATCH_*
non LCK_M_
liés?
J'avais précédemment supposé que SQL Server ne signalait que les sessions de blocage dans la colonne blocking_session_Id. Si les sessions bloquées attendaient un verrou logique et rien d'autre comme a PAGELATCH_*
.
Réponses:
Vous utilisez la
sp_WhoIsActive
procédure d' Adam Machanic , pas une fonction SQL Server intégrée. La procédure d'Adam signale toutes les causes «intéressantes» de blocage, pas seulement le blocage des verrous. Les informations sous-jacentes proviennent de diverses sources, notamment sysprocesses , sys.dm_exec_requests et sys.dm_os_waiting_tasks .Une tâche peut attendre autre chose qu'un verrou. Il peut être en mesure, par exemple, d'acquérir un verrou exclusif sur une ligne d'une page, mais doit encore attendre pour acquérir un verrou de page exclusif (car d'autres tâches ont verrouillé la même page dans un mode incompatible).
Dans votre exemple, les
PAGELATCH_EX
verrous de page exclusifs se trouvent sur des pages de données ou d'index standard, pas sur des pages PFS, GAM, SGAM, DCM ou BCM, comme indiqué par le (*) à la fin de wait_info .Vous pouvez trouver la documentation (entrées de blog)
sp_WhoIsActive
ici .la source