Sessions bloquées en attente avec les types d'attente PAGELATCH_ *?

9

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_*.

entrez la description de l'image ici

Pixélisé
la source
Il semble que de nombreuses sessions simultanées insèrent des données dans la table. Pouvez-vous publier la structure de la table avec les index?
Kin Shah
@Kin le début de la table inséré par les SPID 69, 82 et 84 a un index cluster défini avec une propriété IDENTITY (1,1), il pourrait donc s'agir d'un conflit d'insertion de dernière page, mais à ce stade, je suis plus intéressé par pourquoi les sessions bloquées attendent avec un type d'attente non verrouillable. Il est également intéressant de noter que SPID 93 tente de mettre un XLOCK sur une table totalement indépendante de la table sélectionnée par 64.
Pixelé

Réponses:

6

J'avais précédemment supposé que SQL Server ne signalait une session de blocage 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 la sp_WhoIsActiveprocé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_EXverrous 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 .

Paul White 9
la source