3 - Gestion Des Transactions
3 - Gestion Des Transactions
3 - Gestion Des Transactions
Sécurité de fonctionnement et
accès concurrents
2
EST Fès Administration des Bases de données
Les menaces
Problèmes de concurrence
– pertes d ’opérations
– introduction d ’incohérences
– verrous mortels (deadlock)
Panne de transaction
– erreur en cours d'exécution du programme applicatif
– nécessité de défaire les mises à jour effectuées
Panne système
– reprise avec perte de la mémoire centrale
– toutes les transactions en cours doivent être défaites
Panne disque
– perte de données de la base
3
EST Fès Administration des Bases de données
Propriétés des transactions
Atomicité
– Unité de cohérence : toutes les mises à jour doivent être effectuées ou
aucune.
Cohérence
– La transaction doit faire passer la base de donnée d'un état cohérent à un
autre.
Isolation
– Les résultats d'une transaction ne sont visibles aux autres transactions
qu'une fois la transaction validée.
Durabilité
– Les modifications d ’une transaction validée ne seront jamais perdue
4
EST Fès Administration des Bases de données
Commit et Abort (ROLLBACK)
INTRODUCTION D’ACTIONS ATOMIQUES
– Commit (fin avec succès) et Abort (fin avec échec)
– Ces actions s'effectuent en fin de transaction
COMMIT
– Validation de la transaction
– Rend effectives toutes les mises à jour de la transaction
ABORT
– Annulation de la transaction
– Défait toutes les mises à jour de la transaction
5
EST Fès Administration des Bases de données
Schéma de transaction simple
Fin avec succès ou échec
Begin_Transaction
– update
- Provoque l'intégration réelle des mises
– update à jour dans la base
- Relâche les verrous
– .....
– Commit ou Abort
6
EST Fès Administration des Bases de données
Effet logique
Mémoire de la
transaction
Update
Update
Abort
Commit
7
EST Fès Administration des Bases de données
Problèmes liés aux transactions :
non atomicité
Virement d'un montant m d'un compte C1 vers un compte C2 :
Début
x Lire(C1)
xx-m
Pb : Si le programme s'arrête avant
C1 Ecrire(x)
l'écriture de y dans C2, la base entre
y Lire(C2) dans un état incohérent
yy+m
C2 Ecrire(y)
Fin
Transaction = unité atomique d'actions
(si la transaction n'a pas pu exécuter toutes ses actions, la base est remise dans l'état
où elle se trouvait avant le début de la transaction)
8
EST Fès Administration des Bases de données
Problèmes liés aux transactions :
non isolation
T1 inscrit un débit N sur un solde X et T2 inscrit un crédit M sur X :
Ex : X = 100, N = 10, M = 50
Résultat attendu : 100-10+50 = 140
Actions X x y
T1 T2 T1: x Lire(X) 100 100
x Lire(X) y Lire(X) T1: x x - N 100 90
xx-N yy+M T2: y Lire(X) 100 90 100
X Ecrire(x) X Ecrire(y) T2: y y + M 100 90 150
T1: X Ecrire(x) 90 90 150
T2: X Ecrire(y) 150 90 150
9
EST Fès Administration des Bases de données
Problèmes liés aux transactions :
non cohérence
Ex : on impose la CI (A = B)
Actions de T1 Actions de T2
t11 : AT1 Lire(A) t21 : AT2 Lire(A)
t12 : AT1 AT1 + 1 t22 : AT2 AT2 2
t13 : A Ecrire(AT1) t23 : A Ecrire(AT2)
t14 : BT1 Lire(B) t24 : BT2 Lire(B)
t15 : BT1 BT1 + 1 t25 : BT2 BT2 2
t16 : B Ecrire(BT1) t26 : B Ecrire(BT2)
Pb : chaque transaction satisfait la contrainte, mais leur
exécution concurrente peut la violer
Ex : <t21; t22; t11; t12; t23; t13; t14; t15; t16; t24; t25; t26>
10
EST Fès Administration des Bases de données
Problèmes liés aux transactions :
non permanence des modifications
Non répétabilité des lectures
Transaction T1 Transaction T2
a Lire(A)
b Lire(A)
Imprimer(b) Pb : les impressions de T2
a a + 100 produiront des valeurs
A Ecrire(a) différentes
b Lire(A)
Imprimer(b)
11
EST Fès Administration des Bases de données
Problèmes liés aux transactions :
non permanence des modifications
Tuples "fantômes"
Transaction T1 Transaction T2
S Lire(A), A = {a | a < 4000} V Lire(A), A={a | a < 4000}
Pb : La deuxième impression de V rend un ensemble vide
Imprimer(V)
Les modifications des données par T1 ne sont pas répercutées dans la base avant leur utilisation par T2
Pour chaque s, s S : a = 5000
A Ecrire(S)
V Lire(A), A={a | a < 4000}
Imprimer(V)
12
EST Fès Administration des Bases de données
Plusieurs outils pour résoudre ces
problèmes
13
EST Fès Administration des Bases de données
Atomicité des transactions :
politique du "tout ou rien"
14
EST Fès Administration des Bases de données
Utilisation de points de
sauvegarde
15
EST Fès Administration des Bases de données
Exemple
Transaction ComprendreLesTransactions à partir des
tables suivantes :
16
EST Fès Administration des Bases de données
Transactions imbriquées
BEGIN TRAN
...
BEGIN TRAN
...
BEGIN TRAN
...
COMMIT/ROLLBACK TRAN
...
COMMIT/ROLLBACK TRAN
...
COMMIT/ROLLBACK TRAN
Il y a annulation des effets de toutes les transactions si une des transactions filles ou si la
transaction mère échoue
17
EST Fès Administration des Bases de données
Le journal des transactions
18
EST Fès Administration des Bases de données
Le journal des transactions
Pour chaque transaction T, le journal comporte :
– <début_transaction, identification de T>
– <écriture, identification de T, donnée concernée, ancienne valeur,
nouvelle valeur>
– <lecture, identification de T, donnée concernée>
– <COMMIT, identification de T>
19
EST Fès Administration des Bases de données
Reprise en cas d'accident
Reprise (recovery) : reconstruire un état cohérent de la base à
partir du passé, cet état devant être le plus proche possible de l'instant
où s'est produit l'incident utilisation du journal des transactions
20
EST Fès Administration des Bases de données
Contrôle de la concurrence et
plan d'exécution
Un plan d'exécution P de n transactions est un ordre sur les
opérations des transactions tel que pour toute transaction Tk
participant à P, si une opération Oi précède une opération Oj
dans Tk, alors Oi précède aussi Oj dans P
L'objectif du contrôle de la concurrence est de n'autoriser
que les plans d'exécution corrects
Exemple : problème du transparent 62
– <t11; t12; t13; t21; t22; t23; t14; t15; t16; t24; t25; t26> est un plan
d'exécution correct
– <t21; t22; t11; t12; t23; t13; t14; t15; t16; t24; t25; t26> est un plan
d'exécution incorrect
21
EST Fès Administration des Bases de données
Plan d'exécution sérialisable
Un plan d'exécution P des transactions T1, ..., Tn est une
succession s'il existe une permutation de (1, ..., n) telle que
P = <T (1) ; ...; T (n)>
23
EST Fès Administration des Bases de données
Les quatre niveaux d'isolation
SQL-92 (1/2)
Niveau 0 (READ UNCOMMITTED)
Une transaction T peut lire des objets modifiés par une autre
transaction, pas de verrou en mode lecture
risque de lectures impropres, lectures non reproductibles et
tuples fantômes
24
EST Fès Administration des Bases de données
Les quatre niveaux d'isolation
SQL-92 (2/2)
Niveau 3 (SERIALIZABLE)
= niveau 2, sauf : possibilité de poser des verrous sur un ensemble d'objets
25
EST Fès Administration des Bases de données
Application au SGBD Sybase
Sybase ne supporte que les niveaux d'isolation 0, 1 et 3
Pour une transaction ou une session, un utilisateur peut
choisir un des niveaux :
set transaction isolation level {0 | 1 | 3}
26
EST Fès Administration des Bases de données
Les verrous : problèmes
Inter-blocage
27
EST Fès Administration des Bases de données
Exemple
begin tran
begin tran
set isolation level 0
set isolation level 0
<111> select * from T
insert into T values (12)
<111,12> select * from T
commit tran
set isolation level 1
begin tran
select * from T <111,12>
T1 T3 - T1 détient R1 et attend R2
- T2 détient R2 et attend R3
T2 - T3 détient R3 et attend R1
29
EST Fès Administration des Bases de données
Solutions pour la famine
30
EST Fès Administration des Bases de données
Journaux et Sauvegarde
Journal des images avant
– Journal contenant les débuts de transactions, les valeurs
d'enregistrement avant mises à jour, les fins de transactions
(commit ou abort)
– Il permet de défaire les mises à jour effectuées par une transaction
31
EST Fès Administration des Bases de données
Journal des images avant
Utilisé pour défaire les mises à jour : Undo
2.Log
1.Read 4.Write
Base de données
32
EST Fès Administration des Bases de données
Journal des images après
Utilisé pour refaire les mises à jour : Redo
3.Log
2.Update
1.Read 4.Write
Base de données
33
EST Fès Administration des Bases de données
Gestion du journal
Journal avant et après sont unifiés
Écrits dans un tampon en mémoire et vider sur disque en début de
commit
Structure d'un enregistrement :
– N° transaction (Trid)
– Type enregistrement {début, update, insert, commit, abort}
– TupleId
– [Attribut modifié, Ancienne valeur, Nouvelle valeur] ...
Problème de taille
– on tourne sur N fichiers de taille fixe
– possibilité d'utiliser un fichier haché sur Trid/Tid
34
EST Fès Administration des Bases de données
Sauvegarde
Sauvegarde périodique de la base
– toutes les heures, jours, ...
– Doit être effectuée en parallèle aux mises à jour
Un Point de Reprise (checkpoint) est écrit dans le journal pour le
synchroniser par rapport à la sauvegarde
– permet de situer les transactions effectuées après la sauvegarde
Pose d'un point de reprise :
– écrire les buffers de journalisation (Log)
– écrire les buffers de pages (DB)
– écrire un record spécial "checkpoint" dans le journal
35
EST Fès Administration des Bases de données
Scénarios de Reprise
Les mises à jour peuvent être effectuées directement dans
la base (en place)
– la base est mise à jour immédiatement, ou au moins dès que
possible pendant que la transaction est active
Les mises à jour peuvent être effectuées en mémoire et
installées dans la base à la validation (commit)
– le journal est écrit avant d'écrire les mises à jour
36
EST Fès Administration des Bases de données
Stratégie do-undo
Mises à jour en place
– l'objet est modifié dans la base
1. LirePage Undo
Base
37
EST Fès Administration des Bases de données
Stratégie do-redo
Mises à jour en différentiel
– l'objet est modifié en page différentielle (non en place/journal)
1. LirePage Redo
Base Ombre
Commit 38
EST Fès Administration des Bases de données
La gestion des buffers
Bufferisation des journaux
– on écrit le journal lorsqu'un buffer est plein
– ou lorsqu'une transaction commet
39
EST Fès Administration des Bases de données
Commits bloqués
AFIN D'EVITER 3 E/S POUR 1:
– Le système reporte l'enregistrement des journaux au commit
– Il force plusieurs transactions à commettre ensemble
– Il fait attendre les transactions au commit afin de bloquer un buffer
d'écriture dans le journal
RESULTAT
– La technique des "commits" bloques permet d'améliorer les
performances lors des pointes sans faire attendre trop sensiblement
les transactions
40
EST Fès Administration des Bases de données
Reprise à froid
En cas de perte d'une partie de la base, on repart de la
dernière sauvegarde
Le système retrouve le checkpoint associé
Il ré-applique toutes les transactions commises depuis ce
point
– (for each committed Ti : redo (Ti))
41
EST Fès Administration des Bases de données
Modèles étendus
Applications longues composées de plusieurs transactions
coopérantes
42
EST Fès Administration des Bases de données
Points de Sauvegardes
Introduction de points de sauvegarde intermédiaires
– (savepoint, commitpoint)
Begin_Trans
– update
unité d'oeuvre
– update
– savepoint Non perte du contexte
43
EST Fès Administration des Bases de données
Transactions Imbriquées Begin(T)
– Obtenir un mécanisme de
reprise multi-niveaux
– Permettre de reprendre des Commit(t1)
parties logiques de transactions Commit(t'1) Commet t1
SCHEMA
– Reprises et abandons partiels
Commit(t21)
– Possibilité d'ordonner ou non Abort(t2)
les sous-transactions
Commit(T) Annule t2 et t21
44
EST Fès Administration des Bases de données
Conclusion
Des techniques complexes
Un problème bien maîtrisé dans les SGBDR
La concurrence complique la gestion de transactions
Les transactions longues restent problématiques
Enjeu essentiel pour le commerce électronique
– validation fiable
– reprise et copies
– partage de connections
– partage de charge
45
EST Fès Administration des Bases de données
Optimisation des performances
Adaptation des modèles logiques
47
EST Fès Administration des Bases de données
Evaluation des volumes (1/2)
Taille d'une relation représentant un type d'entité :
– attribut : nombre de caractères nécessaires à sa représentation
– n-uplet : somme des tailles de ses types d'attributs
– relation : produit du nombre d'occurrences du type d'entité par la
taille du n-uplet de la relation
Exemple :
Attribut Type Taille
no_ass entier 10 Si 10000 assurés sont attendus sur une
nom_ass chaîne 30 période de deux ans, l'estimation de la
adr_ass chaîne 40 taille de la relation est de
te_ass chaîne 10 10000(10+30+40+10+10) 1Mo
no_agence entier 10
48
EST Fès Administration des Bases de données
Evaluation des volumes (2/2)
Exemple :
49
EST Fès Administration des Bases de données
Optimisation des volumes
d'attributs
de compression et de décompression
50
EST Fès Administration des Bases de données
Evaluation du coût des
traitements
Dépend du type des opérations de base (recherche, insertion,
suppression, modification)
51
EST Fès Administration des Bases de données
Coût de la recherche d'un n-uplet
(1/2)
coûte :
52
EST Fès Administration des Bases de données
Coût de la recherche d'un n-uplet
(2/2)
Remarques :
– coût d'un accès direct < coût d'un accès séquentiel
53
EST Fès Administration des Bases de données
Coût de l'ajout d'un n-uplet
Insertion :
– écriture dans la base
Coût :
– 1 écriture si la relation n'est pas ordonnée
54
EST Fès Administration des Bases de données
Coût de la modification d'un
n-uplet
Modification :
– recherche dans la base
– modification en mémoire centrale
– réécriture dans la base
Coût :
– coût d'une recherche
– coût d'un ajout
– (éventuellement) coût du maintien d'ordre
– (éventuellement) coût de mise à jour d'index
– (éventuellement) coût de mise à jour de données redondantes
55
EST Fès Administration des Bases de données
Coût de la suppression d'un
n-uplet
Suppression :
– recherche du tuple à supprimer
Coût :
– coût d'une recherche
Fusion de relations
57
EST Fès Administration des Bases de données
Rappel sur les index
Index : structure de données qui associe à une valeur d'un
attribut, appelé clé de l'index, la ou les adresses des tuples
contenant cette valeur
Possible pour un attribut non
clé de la relation
Exemple :
1 1
3 3
1 7
5
1
7
12
7 7
12 5
1
Espace index Espace données
58
EST Fès Administration des Bases de données
Choix des index et des critères
d'ordre
Opérations d'interrogation :
attributs de sélection
59
EST Fès Administration des Bases de données
Redondance et dénormalisation
de relations
Exemple : Expert
chargé du
Expert(no_exp, nom_exp, ...) dossier
Sinistre(no_dossier, ..., no_exp)
Si le nom de l'expert est accédé à chaque référence à un sinistre
Sinistre(no_dossier, ..., no_exp, nom_exp)
Viole la 3NF de Sinistre, mais permet de faire l'économie de
l'opération de jointure pour obtenir le nom
60
EST Fès Administration des Bases de données
Ajout de nouveaux types
d'attributs
Exemple :
" L'expert désigné pour un dossier de sinistre est celui qui a le moins de
dossiers en cours d'instruction "
nécessite le parcours de la relation sinistre avec comptage et
recherche du no_exp ayant le plus petit nombre de dossiers puis
accès à la relation Expert pour connaître ses coordonnées
Expert(no_exp, nom_exp, ..., nb_dossiers-en_cours)
61
EST Fès Administration des Bases de données
Fusion de relations
RE1(clé1, ...)
RE2(clé2, ...)
si jointures très fréquentes de RE1 et RE2, fusionner en une
seule relation
62
EST Fès Administration des Bases de données
Fragmentation verticale de
relations
63
EST Fès Administration des Bases de données
Exemple : coût de l'opération
Ouvrir_dossier
Pour 10000 dossiers et 20 experts :
P1 Vérifier _déclaration Recherche de l'assuré 10000/2 accès
Nouveau coût :
260 jours (1 accès au dernier numéro de dossier + 50
sinistres (1 pour
la recherche de l'assuré +1
pour l'écriture du nouveau dossier +1
pour la recherche de l'expert +1
pour l'ajout d'un sinistre)) = 52.103 accès / an
65
EST Fès Administration des Bases de données