Télécharger la présentation
1
Contrôle de la concurrence
Cours de Bases de Données Inge2-Info, IFIPS, Orasy Tao-Yuan JEN -
2
Problématique Exemple : virement bancaire Update compte
set total=total -100 where compte.id = '0001' Update compte set total=total -100 where compte.id = '0001' Update compte set total=total +100 where compte.id = '0002' Update compte set total=total +100 where compte.id = '0002' Perdu !
3
Problématique Exemple : virement bancaire Unité entière Update compte
set total=total -100 where compte.id = '0001' Update compte set total=total +100 where compte.id = '0002' Unité entière Unité entière Un un Unité
4
ACID A : Atomicité tous exécuté ou non exécuté C : Cohérence
transformation séquentielle d’un état cohérent à un autre I : Isolation pas d’influence d’autres D : Durabilité si valider, alors persister
5
Transactions Actions: Lecture (read) : RT(O) Ecriture (write) : WT(O)
Validations ( commit) : CommitT Annulation (abort) : AbortT Exécution concurrente : partage de ressources sérialisation
6
Sérialisation L'effet d'une exécution concurrente d'un ensemble de transactions est égale à une exécution séquentielle de cet ensemble de transaction sous un certain ordre Exemple T1 : R(A) W(A) W(C) commit T2 : R(B) W(B) commit
7
Anomalies et conflits Deux action sont conflictuelles si au moins une est l'écriture. Anomalies connues et leur conflit : Lecture non validée conflit WR Lecture non reproductibles conflit RW Perte d'opération conflit WW
8
Lecture non validée (1) T1 : R(A) W(A) abort T2 : R(A) W(A) ......
La transaction T2 a lu une valeur de A qui n'est jamais existé
9
Lecture non validée (2) T1 : R(A) W(A) R(B) W(B) commit
L'exécution rend la base de données incohérente Exemple : T1 : A -> B 1000 euros T2 : A= A*(1+2%), B= B*(1+2%)
10
Lecture non reproductible
T1 : R(A) R(A) .... T2 : R(A) W(A) commit La transaction T1 peut se trouver lire deux valeurs distinctes de A sans avoir modifié A (pas de I dans ACID)
11
Perte d'opération T1 : R(A) W(A) commit T2 : R(A) W(A) commit
La transaction T1 supprimer l'effet de T2. Exemple : A= 5; T1 : A = A+1; T2 : A = A -1;
12
Annulation impossible
T1 : R(A) W(A) abort T2 : R(A) W(A) commit Sérialisation garantit les transformations entre des états cohérents si les transactions sont validées. Sinon, il faut éliminer tous effets produits par la transaction annulée. Exemple : A= 5; T1 : A = A+1; T2 : A = A+1;
13
Sérialisable conflituellement
S est sérialisable conflictuellement si les actions conflictuelles des S sont exécutées dans le même ordre que les actions conflictuelles dans une exécution en série. T1 : R(A) commit T2 : W(A) commit T3 : W(A) commit (a) Sérialisable conflictuellement T1 : R(A) W(A) commit T2 : W(A) commit T3 : W(A) commit (b) Sérialisable mais pas sérialisable conflictuellement
14
Graphe des conflits (1) - un noeud pour chaque transaction
- un arc de Ti à Tj s'il existe une action a de Ti qui précède une action b de Tj telles que a et b sont conflictuelles. Une exécution concurrente S est sérialisable conflictuellement ssi le graphe de conflits de S est acyclique
15
Graphe des conflits (2) T1 : R(A) commit T2 : W(A) commit
(a) Sérialisable conflictuellement T3 T1 : R(A) W(A) commit T2 : W(A) commit T3 : W(A) commit T1 T2 (b) Sérialisable mais pas sérialisable conflictuellement T3
16
Verrouillages Verrou partageable (en lecture) : LR(A)
- Un verrou en lecture sur A doit être obtenu par T avant une lecture de A par T Verrou exclusif (en écriture) : LW(A) - Un verrou en écriture sur A doit être obtenu par T avant une écriture de A par T
17
Verrouillage en 2 phases
- LW(O) précède W(O) LR(O) ou LW(O) précèdent R(O) - Tous les verrou doivent être libérés avant la fin de la transaction ou dans son annulation. - 2PL : Aucune demande de verrouillage ne pet succéder à une libération de verrou. è
18
Sérialisation et 2PL 2PL garantit le graphe des conflits est acyclique
Protocole : une action n’est exécutée que si elle n’est pas conflictuelle avec une action déjà exécutée d’autre transaction active Entrée : W(B) W(C) commit W(A) commit W(D) W(B) commit Sortie : W(B) W(C) commit W(A) commit W(D) W(B) commit
19
Lecture non validée et 2PL
Entrée : T1 : R(A) W(A) R(B) W(B) commit T2 : R(A) W(A) R(B) W(B) commit T1 T2 Sortie : T1 : R(A) W(A) R(B) W(B) commit T2 : R(A) W(A) R(B) W(B) commit T1 T2
20
Lecture non reprodctible et 2PL
Entrée : T1 : R(A) R(A) commit T1 T2 T2 : R(A) W(A) commit Sortie : T1 : R(A) R(A) commit T1 T2 T2 : R(A) W(A) commit
21
Verrouillage en 2 phases strict
- LW(O) précède W(O) LR(O) ou LW(O) précèdent R(O) - Tous les verrou doivent être libérés avant la fin de la transaction ou dans son annulation. - Strict 2PL : Tous les verrous d’une transaction sont libérés uniquement à la fin de la transaction
22
Annulation possible avec Strict 2PL
Strict 2PL garantit la possibilité d’annulation Entrée : T1 : R(A) W(A) abort T2 : R(A) W(A) commit Sortie : T1 : R(A) W(A) abort T2 : R(A) W(A) commit
23
2PL et interblocage Entrée : Sortie : T1 : W(A) W(B) W(C) commit
T2 : W(B) W(A) commit Sortie : T1 : LW(A) W(A) LW(B) T2 : LW(B) W(B) LW(A) ….
24
Gestion des interblocages (1)
Détection : Graphe des attentes Prévention : Ti demande un verrou conflictuel avec Tj Wait-Die : Si Ti plus de priorité, alors Ti attend sinon annule Ti Wound-wait : Si Ti plus de priorité, alors annule Tj sinon Ti attend
25
Gestion des interblocages (2)
Graphe des attentes : Si interblocages, alors cyclique T1 : LR(A), R(A), LR(B) T2 : LW(B), W(B) LW(C) T3 : LR(C), R(C) LW(A) T4 : LW(B) T1 T2 T4 T3
26
Gestion des interblocages (3)
Détection V.S. Prévention Fréquence de détection Choix des transaction bloquantes à annuler
27
Problème des fantômes Ajouter ou supprimer une objet
Donc, blocage un ensemble d’objets T1 : LireMax(A) SupprimerMax(B) T2 : LireMax(B) AjouterMax(A)
28
Niveaux d'isolations Lecture non validée Lecture validée
Lecture reproductible Sérialisation Par défaut : sérialisation et lecture-écriture
29
Lecture non validée
30
Lecture validée
31
Lecture reproductible
32
Sérialisable
33
Performance et niveaux d'isolation
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.