Notion de transaction

Transcription

Notion de transaction
Exemple de transaction
Transaction réservation(date, nbplace)
select reste into r from RESERVATION where dateresa=:date
si (r >= nbplace) alors
update RESERVATION set reste=reste-:nbplace where dateresa=:date
éditer-place(date, nbplace)
panne
COMMIT
sinon
afficher ‘ réservation impossible ’
ROLLBACK
finsi
Fin transaction
Transaction virement(nocpte1, nocpte2, montant)
select solde into s from COMPTE where nocompte=:nocpte1
si (s >= montant) alors
update COMPTE set solde=solde-:montant where
nocompte=:nocpte1
panne update COMPTE set solde=solde+:montant where
nocompte=:nocpte2
COMMIT
sinon
afficher ‘ opération impossible ’
ROLLBACK
finsi
Fin transaction
Aspects systèmes - 1
Une transaction doit être soit:
Complètement exécutée: toutes les opérations ont
été réalisées avec succès;
Pas du tout exécutée: la transaction ne doit pas
avoir eu d'
effet ni sur la base, ni sur les autres
transactions.
Atomicité d'
une transaction
nécessité de défaire la partie de
transaction exécutée afin de rétablir une BD
cohérente:
La transaction peut être interrompue en cours de
traitement:
Crash système;
Erreur système ou erreur au sein de la transaction;
Exceptions, violation de CI;
Contrôle de concurrence;
Crash MS;
Problèmes physiques.
L'
exécution parallèle de plusieurs opérations
ne doit pas être faite sans précautions (risque
d ’erreurs)
Sauvegardes et mémorisation des exécutions
(journalisation),
Procédure de reprise.
Aspects systèmes - 2
!
Ensemble logique
d'
opérations élémentaires
sur une BD (unité de
traitements séquentiels).
Une transaction fait passer
la BD d'
un état cohérent à
un autre état cohérent
Les état intermédiaires
peuvent être incohérents.
"
Une transaction est une séquence
d ’opérations qui doit être effectué dans sa
totalité ou pas du tout (principe du tout ou
rien).
Mécanisme de validation (commit), système
de reprise après panne.
A
C
I
D
#
Atomicity
Consistency
Isolation
Durability
"
Une transaction doit faire passer la BD d'
un
état cohérent à un autre état cohérent
(respect des CI).
Développeurs d'
application.
Aspects systèmes - 3
$ "
Une transaction ne doit pas laisser voir ses
modifications à une autre transaction tant
qu'
elle n'
est pas validée (COMMIT).
Contrôle de concurrence.
Image de la BD
Les modifications réalisées par une
transaction ne doivent pas être perdues une
fois celle-ci validée.
La fin de transaction est un point de nonretour, mécanisme de reprise.
#
Problèmes
Principe de sérialisation
Méthodes de contrôle de concurrence
Exemple d'
exécution
Transaction T1
DEBUT
A := Lire(X)
A := A + 100
Transaction T2
DEBUT
B := Lire(X)
B := B + 100
X := Ecrire(A)
FIN
X := Ecrire(B)
FIN
Aspects systèmes - 4
%
Résultat
CI: X = Y
Exemple d'
exécution
Hypothèse: X = 100
DEBUT
DEBUT
X =100, A=100
A := 200
X = 100, B=100
B := 200
Transaction T1
DEBUT
A := Lire(X)
A := A + 1
X := Ecrire(A)
X = 200
FIN
X = 200
FIN
A := Lire(Y)
A := A + 1
Y := Ecrire (A)
Transaction T2
DEBUT
B := Lire(X)
B := B * 2
X := Ecrire(B)
B := Lire(Y)
B := B * 2
Y := Ecrire(B)
FIN
FIN
%
&
Résultat
Hypothèse: X= Y = 80.
DEBUT
A := 80
A := A + 1 = 81
X := 81
A := 160
A := A + 1 = 161
Y := 161
FIN
Exemple d'
exécution
DEBUT
B := 81
B := B * 2 = 162
X := 162
B := 80
B := B * 2 = 160
Y := 160
FIN
Transaction T1
DEBUT
A := Lire(X)
A := A - 50
X := Ecrire(A)
Transaction T2
DEBUT
B := Lire(X)
Annulation de T1
Aspects systèmes - 5
L'
exécution concurrente des transactions doit
être assurée afin d'
optimiser l'
utilisation des
ressources et d'
éviter les incohérences:
Gérer l'
exécution entrelacée;
Contrôler l'
accès aux mêmes ressources
conflit lecture/écriture
Exécution séquentielle des transactions =
pas de problème.
Objectif: ordonnancer les actions des
transactions concurrentes de façon à
produire le même résultat qu'
une exécution
séquentielle (principe de sérialisation)
Détection des conflits d'
accès aux objets par
des transactions concurrentes.
Aspects systèmes - 6