S.G.B.D. relationnel : accès concurrent et transactions

S.G.B.D. relationnel : accès concurrent et transactions

Crédits : Encyclopædia Universalis France

Accès concurrent et transactions. Trois transactions qui modifient les comptes 00450789258 et 00450779876 sont présentées dans le tableau (a). La première transaction effectue un retrait de 200 euros du compte 00450789258. La deuxième crédite le compte 00450779876 de 300 euros, tandis que la troisième transaction effectue un transfert de 100 euros du compte 00450789258 vers le compte 00450779876. Le graphe de sérialisabilité correspondant est montré en b. L'arc d'étiquette a entre T1 et T3 existe à cause des lectures et écritures du compte 00450789258 par la transaction T1 (lignes 1 et 8) qui sont suivies par l'écriture du même compte par la transaction T3 (ligne 11). Symétriquement, il existe un arc b entre la transaction T3 qui effectue une lecture de compte (ligne 3), et T1 qui effectue une écriture du même compte après (ligne 8). Le cycle formé par les deux arcs mène à un état incohérent de la base de données qui ignore la modification apportée par la transaction T1 : à la fin des trois transactions le compte 00450789258 a été débité de seulement 100 euros au lieu de 300 ! Si la ligne 8 du tableau n'existait pas, l'arc b disparaîtrait et, le graphe étant sans cycle, l'ordonnancement serait sérialisable : du point de vue des transactions, tout se passe comme si T1 et T2 étaient exécutées avant T3 ; l'ordre serait soit T1 puis T2 puis T3, soit T2 puis T1 puis T3. En fait, les opérations de T3 sont interclassées avec celles de T1 et T2. Cela fait gagner du temps et n'introduit aucune incohérence dans la base.