La colonne bloquée dans la table sysprocesses est remplie pour les attentes de verrou

Cet article indique que la colonne bloquée dans la table est remplie pour sysprocesses les attentes de verrou.

Version du produit d’origine :   SQL Server
Numéro de la ko d’origine :   906344

Résumé

Dans SQL Server, vous remarquerez peut-être que la colonne bloquée dans la table système est remplie pour les attentes de verrou en plus des sysprocesses attentes de verrouillage. Parfois, vous pouvez remarquer de courtes périodes de temps lorsqu’un ID de processus de serveur unique (SPID) est signalé comme se bloquant lui-même. Ce comportement est normal.

Plus d’informations

Les latches sont utilisées pour synchroniser l’accès aux pages de données mises en cache et à d’autres objets en mémoire. En règle générale, les verrous sont maintenus brièvement et les temps d’attente des verrous sont relativement petits. SQL Server des diagnostics pour vous aider à résoudre les cas dans lesquels un SPID attend un long moment pour un verrou. Ces diagnostics provoquent la réflexion de la colonne bloquée dans la table système sur le propriétaire d’un verrou qui bloque la demande de verrou sysprocesses d’un autre SPID.

La propriété du verrou est uniquement suivi pour les verrous verrous qui sont en mode verrouillage exclusif (EX) ou de mise à jour (UP). La propriété n’est pas suivi pour les verrous verrous qui sont en mode verrou partagé . Cela signifie que la colonne bloquée ne sera pas remplie pour certaines demandes de verrou.

La plupart du temps, vous pouvez ignorer la valeur dans la colonne bloquée si les conditions suivantes sont vraies :

  • La valeur dans la waittime colonne est faible.
  • Le waittype spid est un type d’attente de verrou.

Pour plus d’informations sur les valeurs possibles dans la colonne, voir waittype sys.dm_os_wait_stats (Transact-SQL).

Lorsqu’un SPID attend un verrou de page d’I/S, vous remarquerez peut-être que la colonne bloquée signale brièvement que le SPID se bloque lui-même. Ce comportement est un effet secondaire de la façon dont les latches sont utilisées pour les opérations d’entrée et de fin sur les pages de données. Lorsqu’un thread émettra une demande d’O/S, le SPID qui émettra la demande d’O/S acquiert un verrou sur la page. Toutes SQL Server opérations d’opérations d’SQL Server sont asynchrones. Par conséquent, le SPID essaiera d’acquérir un autre verrou sur la même page si le SPID qui a émis la demande d’I/S doit attendre la fin de la demande. Ce deuxième verrou est bloqué par le premier verrou. Par conséquent, la colonne bloquée signale que le SPID se bloque lui-même. Lorsque la demande d’O/S se termine, le premier verrou est relâché. Ensuite, la deuxième demande de verrou est accordée.

Par exemple, les conditions suivantes peuvent se produire :

  1. SPID 55 souhaite lire une page de données qui n’existe pas dans le pool de mémoires tampons.

  2. SPID 55 acquiert un verrou EX sur la page. Étant donné que la page n’existe pas encore en mémoire, le mode verrou demandé est EX. Le mode verrouillage EX force d’autres SPID qui souhaitent également accéder à la page à attendre la fin de la demande d’I/S. Le mode verrou EX empêche également d’autres SPID d’émettre une demande d’E/S en double pour la même page.

  3. SPID 55 demande de lecture de la page à partir du disque.

  4. Étant donné que SPID 55 souhaite lire la page, SPID 55 doit attendre la fin de la demande d’O/S. Pour attendre la fin de la demande d’E/S, SPID 55 tente d’acquérir un autre verrou qui a le mode verrou partagé (SH) sur la même page. Étant donné qu’un verrou EX a déjà été acquis, la demande de verrouillage SH est bloquée et le SPID est suspendu. Étant donné que le verrou EX qui bloque la demande de verrouillage SH a également été acquis par SPID 55, le SPID est temporairement signalé comme bloquant lui-même.

  5. Lorsque la demande d’O/S se termine, le verrou EX de la page est libéré.

  6. La libération du verrou EX donne le verrou SH à SPID 55.

  7. SPID 55 peut désormais lire la page.

Entre les étapes 4 et 5, le tableau indique que sysprocesses SPID 55 est bloqué seul avec un type d’attente PAGEIOLATCH_ XX. Dans ce type d’attente, XX peut être SH, UP ou EX. Ce comportement indique que SPID 55 a émis une demande d’I/S et que SPID 55 attend la fin de la demande d’O/S.