Vous êtes sur la page 1sur 36

Bases de données Avancées

Gestion des transactions

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

• Si aucun contrôle du déroulement, les problèmes


suivants peuvent apparaître :
• Perte de mise à jour.
• Lecture impropre.
• Lecture de données incohérentes,
• Lecture de données non confirmées.
• Lecture non reproductible.
• Objets fantômes.

Université Constantine 2 8
Perte de mise à jour

On devrait avoir A=70 MAIS on a A = 60 : perte de la mise à jour de T1.

Université Constantine 2 9
Lecture impropre (données incohérentes)

Université Constantine 2 10
Lecture impropre (données non confirmées)

T1 a lu une valeur de A incorrecte : tout doit se passer comme si T2


n’avait jamais changé A.
Université Constantine 2 11
Lecture non reproductible

T2 (qui ne modifie pas A) devrait obtenir à chaque lecture la même


valeur pour cette donnée.
Université Constantine 2 12
Objet fantôme

T1 n’a pas vu l’ajout de 4 dans E par T2, pour T1 4 est un objet


fantôme.

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

Oi et Oj, 2 opérations. Toute exécution simultanée donne le même résultat


qu'une exécution séquentielle Eij= Oi suivie de Oj ou de Eji=Oj suivie de
Oi. Les résultats de Eij et Eji peuvent être différents.

O1 et O2 sont compatibles, pas O1 et O3.

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

Oi et Oj, 2 opérations. Toute exécution de Oi suivie de Oj donne le même


résultat que celle de Oj suivie de Oi.

O1 et O3 ne sont pas permutables.


O1 et O4 sont 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

-2 opérations travaillant sur 2 granules différents sont


toujours compatibles.

-2 opérations travaillant sur 2 granules différents sont


toujours permutables.

-2 opérations compatibles sont permutables, mais la


réciproque n'est pas vraie.

Université Constantine 2
Ordonnancement des transactions

Exécution en série : une transaction après l'autre.


Exécutions équivalentes : Quelque soit la BD, l'effet
de la première exécution est identique à l'effet de la
seconde exécution (moyen de vérification : ordre des
lectures et écritures conflictuelles).
Exécution sérialisable : équivalente à une exécution
en série. Si chaque transaction préserve la
cohérence, toute exécution en série préserve la
cohérence.

Université Constantine 2
Exécution simultanée (ou Histoire)

Ordre dans lequel les opérations d’un ens de transactions


sont exécutées
Peut être définie comme un ordre partiel sur les opérations
d’un ens. de transactions

T1: Read(x) T2: Write(x) T3: Read(x)


Write(x) Write(y) Read(y)
Commit Read(z) Read(z)
Commit Commit

H1={W2(x) R1(x) R3(x) W1(x) C1W2(y) R3(y) R2(z) C2 R3(z) C3}

Université Constantine 2
Exécution en série

Toutes les actions de la transaction sont consécutives

Pas d’entrelacement des opérations de transactions


Si chaque transaction est cohérente (satisfait les
contraintes d’intégrité), alors la BD sera cohérente
après l’exécution en série
T1: Read(x) T2: Write(x) T3: Read(x)
Write(x) Write(y) Read(y)
Commit Read(z) Read(z)
Commit Commit

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

● Une exécution sérialisable est correcte car elle donne le


même résultat qu'une exécution l'une après l'autre de
transactions.
● Pas toujours possible (ex: non commutativité de
l'addition et multiplication).
● Précédence : propriété indiquant qu'une transaction
a accompli une opération Oi sur une donnée avant
qu'une autre transaction réalise une opération Oj; Oi
et Oj n'étant pas commutatives ({Oi;Oj}≠{Oj;Oi}).

Université Constantine 2
Graphe de précédence

● La notion de précédence de transactions peut être


représentée par un graphe.
● Un graphe dont les noeuds représentent les
transactions et dans lequel il existe un arc Ti vers Tj
si Ti précède Tj dans l'exécution analysée.
{T1:Lire A; A
T2: Ecrire A; T1 T2
T2: Lire B; A T3
T3: Lire A; B
T1: Ecrire B}

Condition suffisante de sérialisabilité: le graphe de précédence


est sans circuit.

Université Constantine 2
Techniques pour le contrôle de la concurrence

● 2 principales techniques pour garantir la


sérialisabilité des transactions:
● Prévention de conflits, basée sur le verrouillage
● Détection des conflits, basée sur estampillage

Université Constantine 2
Contrôle de la concurrence avec technique de blocage

• La technique de blocage (lock) est la plus populaire dans le SGBD


actuels.
• Il s'agit d'une variable associé à un élément de la BD. Généralement,
il y a une variable (lock) pour chaque élément de la BD.

• Un lock décrit l'état de l'élément en fonction des opérations possibles


(lecture, écriture).
• Cette technique permet de synchroniser les transactions concurrentielles.

• Une transaction bloque un élément avant de l'utiliser

• Lorsqu'une transaction bloque un élément, une autre transaction


désirant accéder à cet élément doit attendre son tour.

Université Constantine 2
Verrouillage 2 phases

• L'algorithme de contrôle de concurrence le plus utilisé


– Stratégie pessimiste: essaie de prévenir les incohérences en mettant
en attente des opérations
• Verrous
– Un verrou associé à chaque article, accordé aux transactions
– Objectif: marquer les opérations réalisés sur l'article par les
transactions afin de ne laisser passer que des opérations commutables
• Une opération en conflit avec des opérations déjà acceptées des
transactions en cours →bloquée au verrou
– Verrou composé
• Sous-verrou de lecture→ partageable (les lectures sont
commutables)
• Sous-verrou d'écriture → exclusif (les écritures sont en conflit
avec tout)
Université Constantine 2
Algorithme de verrouillage
• L'ordonnanceur reçoit l'opération oi[x] de la transaction Ti
– Si le verrou de x est déjà donné à une opération en conflit
avec oi[x]
→ opération bloquée en attente de la libération du verrou
• Lorsqu'une opération est bloquée, toute sa transaction
est bloquée!
– Sinon, on donne à la transaction Ti le sous-verrou de x qui
correspond à o → opération acceptée

• Un sous-verrou détenu par une transaction est libéré au plus


tard à la fin de la transaction
– Lorsqu'un sous-verrou est libéré, une des opérations en
attente de ce verrou est choisie pour le prendre
• Généralement on respecte l'ordre de blocage
.
– Plusieurs opérations peuvent être débloquées si le verrou
est partagé
Université Constantine 2
Algorithme de verrouillage
• Règle des deux phases: une transaction qui libère un verrou ne
pourra plus en demander d'autres pour ses opérations
 Dans la vie d'une transaction il y a deux phases
• Une première d'accumulation de verrous
• Une seconde de libération de verrous

• En pratique: libération des verrous à la fin de la transaction


– Cette variante produit aussi des exécutions strictes (empêche
les lectures et les écritures sales)
.
Université Constantine 2
Problèmes liés au blocage

Deadlock : Chaque transaction attend que l'autre transaction libère


un élément.
T1 T2
read_lock(Y)
read_item(Y)
read_lock(X)
read_item(X)
write_lock(X)
write_lock(Y)

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:

 Wait-Die :si Ti a une priorité supérieure, Ti attend Tj ; autrement Ti


abandonne
 Wound-Die: Si Ti a une priorité supérieure, Tj abandonne ; autrement Ti
attend.
Université Constantine 2
Prévention des interblocages

Université Constantine 2
Gestionnaire de verrouillage

Les demandes de verrouillage et de déverrouillage sont gérés par le


gestionnaire de verrouillage

• La table des verrous pour 1 granule comporte:


Nombre de transactions ayant un verrou
Type de verrou (shared ou exclusive)
Pointeur vers la queue de la file des demandes de verrous

Verrouillage et déverrouillage sont des opérations atomiques

Notion d'upgrade d'une verrou: une transaction détenant un verrou


partagé peut demander à transformer celui-ci en un verrou exclusif.

Université Constantine 2
Granularité et Verrouillage

Choix du granule à verrouiller


Dans un SGBDR, les objets peuvent être : une table, une page
ou un tuple.

Choix d'une unité de verrouillage fine minimise les risque de


conflits mais augmente la complexité et le coût du verouillage.

Université Constantine 2

Vous aimerez peut-être aussi