Les verrous font partie intégrante du maintien du contrôle de concurrence dans un SGBD. Les transactions dans tout système qui implémente un contrôle de concurrence basé sur les verrous ne peuvent pas lire ou écrire des instructions tant qu'elles n'ont pas acquis les verrous requis.
Il existe deux types de verrous dans les protocoles basés sur le verrouillage. Ce sont :
Les différents protocoles de verrouillage sont -
Une transaction acquiert un verrou sur une valeur de donnée avant d'effectuer une opération d'écriture. Une fois l'opération d'écriture terminée, le verrou peut être libéré. Un exemple de protocole de verrouillage simple est :
T1 | T2 |
---|---|
R(A) | |
R(A) | |
Verrouillage( B ) | |
R(B) | |
W(B) |
|
Déverrouiller(B) | |
Verrouiller (C) | |
R (C) | |
W(C) | |
Déverrouiller (C) | |
Envoyer | |
Commit |
Deux transactions T1 et T2 sont présentées ci-dessus. Les opérations de lecture ne nécessitent pas de verrous, mais chaque transaction acquiert un verrou avant une opération d'écriture et libère le verrou par la suite.
Le protocole de verrouillage en deux phases comporte deux phases, à savoir la phase de croissance et la phase de contraction. Une transaction ne peut acquérir des verrous que pendant la phase de croissance. Lorsqu’il entre dans la phase de réduction, il peut libérer les verrous précédemment acquis, mais ne peut pas en acquérir de nouveaux. Les verrous exclusifs sont représentés par X et les verrous partagés sont représentés par S. Un exemple de protocole de verrouillage en deux phases est -
T1 | T2 |
---|---|
S(A) | tr> |
R(A) |
|
S(A) | |
R(A) | |
W(B)
|
|
|
|
Déverrouiller (B) | |
Déverrouiller (A) | |
Envoyer | |
| |
Dans l'exemple ci-dessus, T1 et T2 partagent le verrou en utilisant la variable partagée A car seules les opérations de lecture sont effectuées sur A. T1 acquiert le verrou exclusif sur B pour l'opération d'écriture et le libère peu de temps après. T2 fait la même chose que C. |
|
Le protocole de verrouillage strict en deux phases est similaire au protocole de verrouillage en deux phases. La seule différence est que dans un protocole 2PL strict, tous les verrous exclusifs acquis par le protocole doivent être conservés jusqu'à ce que le protocole soit validé ou abandonné. Un exemple de protocole de confinement strict en deux étapes est : | T1 |
S(A) | |
R(A) |
tr> | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
X(B) | ||||||||||||||||||||||||||||
R(B)
|
||||||||||||||||||||||||||||
W B | ||||||||||||||||||||||||||||
Envoyer | ||||||||||||||||||||||||||||
Déverrouiller (B) | ||||||||||||||||||||||||||||
Envoyer | ||||||||||||||||||||||||||||
| Déverrouiller(C) ||||||||||||||||||||||||||||
Dans l'exemple ci-dessus, T1 et T2 partagent la variable A en utilisant un verrou partagé, car seules les opérations de lecture sont effectuées sur A. T1 acquiert un verrou exclusif sur B pour les opérations d'écriture et T2 acquiert un verrou exclusif sur C. Le verrou exclusif n'est libéré qu'après la validation de la transaction. Cependant, les verrous partagés ne sont pas soumis à de telles restrictions. Protocole de verrouillage strict à deux phasesLe protocole de verrouillage strict à deux phases n'est qu'une extension du protocole de verrouillage à deux phases et du protocole de verrouillage strict à deux phases. Protocole de verrouillage. Ici, tous les verrous détenus par une transaction, qu'ils soient partagés ou exclusifs, ne sont libérés que lorsque la transaction est validée ou abandonnée. Un exemple de protocole de confinement strict en deux étapes est :
|
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!