126
Introduction pratique aux bases de données relationnelles
deux verrous pourrait se faire en une fois à la fin de la transaction
TRX_1 au lieu d'être échelonnée dans le temps.
Figure 4-8
Le protocole de
verrouillage à deux
phases appliqué à
la transaction
TRX_1
Augmentation du
degré de
parallélisation
Grâce au verrouillage progressif des objets a et b durant la phase
d'acquisition et à la levée échelonnée des verrous dans la phase de
relâchement, le degré de parallélisation de la transaction TRX_1
augmente. En revanche, si les deux verrous étaient acquis au début de
la transaction et libérés seulement tout à sa fin, les transactions
concurrentes devraient attendre le relâchement des objets a et b
pendant toute la durée de traitement de TRX_1.
En général, le protocole de verrouillage à deux phases garantit la
sérialisabilité des transactions concurrentes.
Sérialisabilité grâce
au protocole de
verrouillage
Synchronisation pessimiste (pessimistic concurrency control, en
anglais)
Par l'application du protocole de verrouillage à deux phases, tout
ensemble de transactions concurrentes est sérialisable.
Les cycles dans les
graphes de
précédence sont
évités
Grâce à la nette séparation des deux phases d'acquisition et de
relâchement des verrous, le protocole de verrouillage à deux phases
prévient le plus tôt possible les dépendances cycliques dans les
graphes de précédence ; les transactions concurrentes s'exécutent sans
conflit entre elles. Dans l'exemple de la mise à jour des comptes a, b
BEGIN_OF_TRX_1
LOCK(a)
READ(a)
a:=a+100
WRITE(a)
LOCK(b)
READ(b)
END_OF_TRX_1
UNLOCK(a)
b:=b-100
WRITE(b)
UNLOCK(b)
Temps
Verrous
Lock(b)
Lock(a)
Unlock(b)
Unlock(a)
Précédent

- 141/301

Suivant