Académique Documents
Professionnel Documents
Culture Documents
Raida ElMansouri
Faculté des NTIC
Université Constantine 2
Transactions
• Transaction
• Séquence d'opérations sur la BD produite par l'exécution d'un
programme
– La transaction a une cohérence logique
• Unité de traitement atomique qui fait passer la base de
données d’un état cohérent à un état cohérent
• Relation programme – transaction
• Une transaction provient de l'exécution d'un programme
• Une exécution de programme produit une séquence
d'opérations, qui peut être découpée en plusieurs transactions
• Des exécutions différentes d'un même programme peuvent
produire des séquences d'opérations (donc aussi des
transactions) différentes
• Plusieurs exécutions d'un même programme peuvent être
présentes en même temps dans le système
Université Constantine 2 2
Transactions
• On ne s'intéresse qu'aux opérations de lecture/écriture dans
la BD
• La séquence peut être découpée en plusieurs sous-séquences,
chacune pouvant être validée (Commit) ou annulée (Rollback)
• Exemple: programme de débit d'un compte
Débit (solde Article, montant int){
S int
Lire(solde);
S:= sole;
if (S < montant) Rollback;
else {Ecrire(solde, S-montant); Commit;}
}
• Séquences possibles à l'exécution
– Lire(solde), Rollback
– Lire(solde), Ecrire(solde), Commit
Université Constantine 2 3
Propriétés (ACID) d’une transaction
Le SGBD doit assurer que toute transaction possède les
propriétés suivantes :
• Atomicité : Une transaction est une unité atomique de
traitement .
• une transaction s'exécute soit en totalité soit pas du tout
– Une exécution partielle de la transaction est
inacceptable
– Une transaction qui ne peut pas se terminer doit être
annulée
• Cohérence :Une transaction préserve la cohérence de la BD.
Elle respecte les contraintes d'intégrité de la BD
Université Constantine 2 4
Propriétés (ACID) d’une transaction
• Isolation :Les exécutions des transactions ne doivent pas
interférer les unes avec les autres . Une transaction ne
doit jamais voir les résultats intermédiaires des autres
transactions. Les transactions s'exécutent comme si elles
étaient seules dans la BD.
C'est le rôle du contrôle de concurrence
• Durabilité :Les changements appliqués à la BD par une
transaction validée doivent persister.
• On ne doit pas annuler une transaction validée
Université Constantine 2 5
Concurrence d’accès
• SGBD : multi-utilisateurs.
• Plusieurs transactions actives (pas terminées) en même temps
• Une même information peut manipulée par plusieurs utilisateurs à la fois.
• Vision client-serveur
• Les transactions/programmes = clients qui envoient des demandes au SGBD
(demandes de lecture ou d'écriture d'articles)
- Le SGBD = serveur qui reçoit ces demandes et les exécute
– Le SGBD exécute les opérations en séquence, pas en parallèle!
→ Concurrence = entrelacement des opérations des transactions
• Concurrence parfaite: toute opération est exécutée dès son arrivée
– Problème: certains entrelacements ne sont pas corrects
• Contrôle de concurrence
– Modifier l'entrelacement pour produire une exécution correcte des
transactions
→Retardement des opérations, perte de performances
Université Constantine 2 6
Concurrence d’accès
Université Constantine 2 7
Problèmes dus à la concurrence
Université Constantine 2 8
Perte de mise à jour
Université Constantine 2 9
Lecture impropre (données incohérentes)
Université Constantine 2 10
Lecture impropre (données non confirmées)
Université Constantine 2 13
Contrôle de concurrence
• Objectif: produire une exécution correcte, en respectant
les propriétés ACID
• Isolation : les transactions ne doivent pas voir les effets
des autres transactions concurrentes
• l'exécution doit être équivalente à une exécution séparée
(en série) des transactions
• Etude de la ”sérialisabilité” de l’exécution d’un ensemble
de transactions,
Université Constantine 2 14
Opérations compatibles
O1 { O2 { O3 {
Lire A -> a1 Lire B -> b1 Lire A -> a2
a1+1->a1 b1+1->b1 a2*2->a2
Ecrire a1->A Ecrire b1->B Ecrire a2->A
} } }
Université Constantine 2
Opérations permutables
O1 { O3 { O4 {
Lire A -> a1 Lire A -> a2 Lire A -> a1
a1+1->a1 a2*2->a2 a1+10->a1
Ecrire a1->A Ecrire a2->A Ecrire a1-> A
} } }
Université Constantine 2
Opérations compatibles/permutables
Université Constantine 2
Ordonnancement des transactions
Université Constantine 2
Exécution simultanée (ou Histoire)
Université Constantine 2
Exécution en série
Hs= W2(x) W2(y) R2(z) C2 R1(x) W1(x) C1 R3(x) R3(y) R3(z) C3}
T2 → T1 → T3
Université Constantine 2
Exécution sérialisable
Les transactions s’exécutent simultanément,
mais le résultat sur la BD est équivalent à une
exécution en série (T1,..Tn).
Equivalent par rapport à quoi?
équivalence de conflit : l’ordre relatif
d’exécution des opérations conflictuelles
des transactions validées dans deux exécutions
sont identiques
Opérations conflictuelles: deux opérations
incompatibles (par ex. Read et Write) sont en
conflit si elles accèdent le même granule
si deux opérations de deux transactions
différentes sont en conflit, on dit que les
transactions correspondantes sont aussi en
conflit
Université Constantine 2
Sérialisation exemple
(1)T1: A+1-> A
(2)T2: A*2->A (2) et (3) sont permutables
(3)T1: B+1->B car pas sur le même granule
(4)T2: B*2->B
On peut transformer en:
● T1: A+1->A
● T1: B+1->B Cette exécution est sérialisable
● T2: A*2->A
● T2: B*2->B
Université Constantine 2
Exemple d’exécution sérialisable
T1 T2 T1 T2
read A read A
write A write A
read A read B
read B write B
write A read A
write B write A
read B read B
write B write B
r1(A) w1(A) r2(A) r1(B) w2(A) w1(B) r2(B) w2(B) r1(A) w1(A) r1(B) w1(B) r2(A) w2(A) r2(B) w2(B)
Université Constantine 2
Précédence
Université Constantine 2
Graphe de précédence
Université Constantine 2
Techniques pour le contrôle de la concurrence
Université Constantine 2
Contrôle de la concurrence avec technique de blocage
Université Constantine 2
Verrouillage 2 phases
Université Constantine 2
Solutions des Interblocages
• Deux approches:
• Détection: laisser les transactions se mettre en interblocage, le détecter
puis le résoudre. Grâce au graphe des attentes: un interblocage: un cycle
dans le graphe
• Quand faire la détection ?
lors des demandes de verrouillage
périodiquement
après un certain temps d’attente pour une transaction
• Action: tuer l’une des transactions
celle qui a fait le moins de maj
la plus jeune
celle qui a le moins de ressources allouées …
• Tuer: défaire (annuler ses maj, ses verrous) puis relancer
automatiquement plus tard
• Prévention: prévenir les interblocages.
• En pratique, solution détection la plus souvent utilisée car prévention plus
coûteuse
Université Constantine 2
Prévention des interblocages
• Prévention par estampillage:
Estampillage de chaque transaction avec l’heure de lancement
• valeur associée à une transaction, indiquant l'ordre de démarrage des
transactions
– Produite par un compteur, par une horloge, etc..
Idée générale: les opérations en conflit doivent passer dans l'ordre des
estampilles
-L'exécution est sérialisable, le graphe ne peut pas avoir de cycle
• Deux algorithmes:
Université Constantine 2
Gestionnaire de verrouillage
Université Constantine 2
Granularité et Verrouillage
Université Constantine 2