Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Interblocage de la plage se verrouille sur l'index de clé primaire

C'est un blocage classique lorsqu'un processus (victime) lit sur serializable niveau et un autre met à jour la même table clusterisée.

Vous êtes confus avec ce qui est converti en quoi.

Le premier processus ("process5e13b88") a acquis RangeS-S verrouille et attend un autre RangS-S verrouiller (où il y a X verrouillage du processus de mise à jour), il ne convertit rien.

Le deuxième "process5e45b88" a acquis X verrouiller sur une clé et U sur une autre clé et souhaite la convertir en X mais ce n'est pas possible car il y a RangeS-S verrouiller.

Je joins l'image où vous pouvez voir qu'un processus veut et acquiert uniquement RangeS-S serrures et une autre seulement X serrures.

Lorsque vous voyez RangeS-U verrouiller cela signifie qu'il y a RangeS-S verrouiller la plage mais la clé elle-même a U verrouiller