Partager via


Compatibilité de verrouillage (moteur de base de données)

La compatibilité de verrouillage détermine si plusieurs transactions peuvent simultanément acquérir des verrous sur la même ressource. Si une ressource est déjà verrouillée par une autre transaction, une demande de nouveau verrou ne peut être accordée que si le mode du verrou demandé est compatible avec celui du verrou existant. Si le mode du verrou demandé n'est pas compatible avec le verrou existant, la transaction qui demande le nouveau verrou attend que le verrou existant soit libéré ou que l'intervalle de délai de verrouillage ait expiré. Par exemple, aucun mode de verrou n'est compatible avec les verrous exclusifs. Lorsqu'un verrou exclusif (X) est posé, aucune autre transaction ne peut acquérir un verrou de quelque sorte que ce soit (partagé, mise à jour, exclusif) sur cette ressource tant que le verrou exclusif (X) n'a pas été libéré. Inversement, si un verrou partagé (S) a été appliqué à une ressource, les autres transactions peuvent aussi acquérir un verrou partagé ou de mise à jour (U) sur cet élément, même si la première transaction n'est pas terminée. Toutefois, les autres transactions ne peuvent pas acquérir un verrou exclusif tant que le verrou partagé n'a pas été libéré.

Le tableau suivant décrit la compatibilité des modes de verrou les plus courants.

 

Mode accordé existant

 

 

 

 

 

Mode requis

IS

S

U

IX

SIX

X

Intent partagé (IS)

Oui

Oui

Oui

Oui

Oui

Non

Partagé (S)

Oui

Oui

Oui

Non

Non

Non

Mise à jour (U)

Oui

Oui

Non

Non

Non

Non

Intent exclusif (IX)

Oui

Non

Non

Oui

Non

Non

Partagé avec intent exclusif (SIX)

Oui

Non

Non

Non

Non

Non

Exclusif (X)

Non

Non

Non

Non

Non

Non

[!REMARQUE]

Un verrou intent exclusif (IX) est compatible avec un mode de verrouillage IX car IX signifie l'intention de mettre à jour uniquement certaines lignes et non pas toutes les lignes. Les autres transactions qui essaient de lire ou de mettre à jour certaines lignes sont aussi autorisées si elles ne mettent pas à jour les lignes en cours de mise à jour par les autres transactions.

Matrice complète de la compatibilité de verrouillage

Utilisez le tableau suivant pour déterminer la compatibilité de tous les modes de verrou disponibles dans MicrosoftSQL Server.

Diagramme affichant la matrice de compatibilité des verrous