Question

Edité :Pourquoi les sessions signalant sont-elles bloquées mais attendent-elles avec PAGELATCH_*, et pas LCK_M_ types d'attente associés ?

J'avais précédemment supposé que le serveur SQL signalerait uniquement les sessions bloquantes dans la colonne blocking_session_Id.Si les sessions bloquées attendaient un verrou logique et rien d'autre comme un PAGELATCH_*.

enter image description here

Était-ce utile?

La solution

J'avais précédemment supposé que SQL Server ne signalerait une session bloquante dans la colonne blocking_session_id que si les sessions bloquées attendaient un verrou logique et rien d'autre comme un PAGELATCH_*.

Vous utilisez Adam Machanic sp_WhoIsActive procédure, et non une fonctionnalité SQL Server intégrée.La procédure d'Adam rapporte toutes les causes « intéressantes » de blocage, pas seulement le blocage des verrous.Les informations sous-jacentes proviennent de diverses sources, notamment processus système, sys.dm_exec_requests, et sys.dm_os_waiting_tasks.

Une tâche peut attendre autre chose qu'un verrou.Il peut par exemple être capable d'acquérir un verrou exclusif sur une ligne d'une page, mais devra alors encore attendre pour acquérir une page exclusive. loquet (car d'autres tâches ont verrouillé la même page dans un mode incompatible).

Dans votre exemple, le PAGELATCH_EX les verrous de page exclusifs se trouvent sur des pages de données ou d'index normales, et non sur des pages PFS, GAM, SGAM, DCM ou BCM, comme indiqué par le (*) à la fin du attendre_info.

Vous pouvez trouver la documentation (entrées de blog) pour sp_WhoIsActive ici.

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top