Académique Documents
Professionnel Documents
Culture Documents
CoursBD IUP3
CoursBD IUP3
Gestionnaire de fichiers
Chapitre 4
Chapitre 1 Chapitre 5
Chapitre 2
3
Chap. I - Architecture d’un SGBD
• Vision des données par le SGBD : un ensemble
d’enregistrements mémoire
• Vision des données par le gestionnaire de fichiers :
un ensemble de pages mémoire
• Vision des données par le gestionnaire de disque :
un ensemble de pages disque
• Rôle du gestionnaire de buffer : passage des pages
du disque vers la mémoire (et inversement)
Gestionnaire de buffer
Mémoire
Page mémoire
libre
Page de
Disque données
Page de données
modifiées
Mémoire
Page mémoire
libre
Page de
Disque données
Page de données
modifiées
Mémoire
Page mémoire
libre
Page de
Disque données
Page de données
modifiées
Mémoire
Page mémoire
libre
Page de
Disque données
Page de données
modifiées
Mémoire
Page mémoire
libre
Page de
Disque données
Page de données
modifiées
Mémoire
Page mémoire
libre
Page de
Disque données
Page de données
modifiées
Date de montée
Mémoire Date de dernier accès
…
Page mémoire
libre
Page de
Disque données
Page de données
modifiées
Date de montée
Mémoire Date de dernier accès
…
Page mémoire
libre
Page de
Disque données
Page de données
modifiées
Date de montée
Mémoire Date de dernier accès
…
Page mémoire
libre
Page de
Disque données
Page de données
modifiées
Date de montée
Mémoire Date de dernier accès
…
Page mémoire
libre
Page de
Disque données
Page de données
modifiées
Date de montée
Mémoire Date de dernier accès
…
Page mémoire
libre
Page de
Disque données
Page de données
modifiées
Date de montée
Mémoire Date de dernier accès
…
Page mémoire
libre
Page de
Disque données
Page de données
modifiées
Date de montée
Mémoire Date de dernier accès
…
Page mémoire
libre
Page de
Disque données
Page de données
modifiées
Système de fichiers
Intégration ou non des fonctionnalités du SGF du
système d’exploitation :
A chaque relation correspond un fichier
Fichier de hachage
• Fonction de hachage :
calcule la page où doit être stocké l’enregistrement en
fonction de la valeur d’un ou plusieurs de ses champs
• Regroupement de pages d’un fichier de hachage en buckets
composés de segments
• Gestion de pages d’overflow
• Placement des enregistrements par ordre d’arrivée dans le
bucket
• Pas de garantie d’adresse unique
• Gestion des collisions
©Maude Manouvrier - Univ. Paris Dauphine 15
Chap. II - Organisation
Hachage statique
13
13
La taille du
répertoire
est doublée
et le bucket
A est divisé
en 2
La taille du 13
répertoire
est doublée
et le bucket
A est divisé
en 2
La taille du 13
répertoire
est doublée h(4)=100
et le bucket h(12)=100
A est divisé h(16) = 000
en 2
h(32)=000
h(20) = 100
La taille du 13
répertoire
est doublée h(4)=100
et le bucket h(12)=100
A est divisé h(16) = 000
en 2
h(32)=000
h(20) = 100
2 14 22 10
0
1
5 9 7 15
2 10
Répertoire de buckets 14 1110
buckets 22 10110
10 1010
5 101
9 1001
On ajoute l’entrée 26 (11010) 7 111
15 1111
20 10100
8 1000
2 12 1100
2 16 10000
20 8 12 16
00
01 1
10 5 9 7 15
11 2
2 14 22 10 26
Répertoire de
buckets Pages d’overflow
buckets
20 10100
8 1000
2 12 1100
2 16 10000
20 8 12 16
00
01 1
10 5 9 7 15 Insertion de 17
11 (10001 en binaire)
2
2 14 22 10 26
Répertoire de
buckets Pages d’overflow
buckets
2
7 15
Répertoire de
buckets buckets Pages d’overflow
©Maude Manouvrier - Univ. Paris Dauphine 23
Chap. II - Organisation
Buckets dédoublés
pendant le round
Insertion de l’entrée 43 :
43 en binaire =101011
h0(43)=11
Or le bucket est plein
⇒ Division du bucket Next
Bucket divisé
Bucket dédoublé
Bucket divisé
Bucket dédoublé
Bucket divisé
Bucket dédoublé
Bucket divisé
37
Bucket dédoublé
100
100
101
Index (1/4)
• 3 alternatives
→Les entrées de clé de recherche k sont les enregistrements mêmes
→ Les entrées sont des couples (k,rid)
→ Les entrées sont des couples (k,liste_rid)
• Index primaire
Clé de recherche = clé primaire de la relation
• Index secondaire
→ (clé de recherche, valeur(s) de clé primaire)
→ (clé de recherche, pointeur(s) vers les pages du fichier)
⇒ l’index primaire doit être lu après l’index secondaire
Index (2/4)
• Clustered index
Index (3/4)
• Unclustered index
Index (4/4)
• Index dense / non dense (sparce)
f1 f2 f3
(1, GAMOTTE, Albert, …) (23, PABIEN, Yvon, …) (46, PAN, Amédée, …)
(2, HIBULAIRE, Pat, …) (24, DEBECE, Aude, …) (47, DENT, Malo, …)
… … …
f1 f2 f3
(DEBECE, 24) (GAMOTTE, 1) (PABIEN, 23)
… … …
f1 f2 f3
(DEBECE, 24) (GAMOTTE, 1) (PABIEN, 23)
… … …
Pages de la relation
(1, GAMOTTE, Albert, …) (23, PABIEN, Yvon, …) (46, PAN, Amédée, …)
(2, HIBULAIRE, Pat, …) (24, DEBECE, Aude, …) (47, DENT, Malo, …)
… … …
©Maude Manouvrier - Univ. Paris Dauphine 35
Chap. II - Organisation
Arbre B+ (3/3)
HIBULAIRE
FRICE PAN
f1 f2 f3 f4
(DEBECE, 24) (FRICE, 70) (HIBULAIRE,2) (PAN, 46)
… … … …
∞ (Employe.#Filiale=Filiale.#Filiale)
Employe Filiale
Π Nom
SELECT Nom
FROM Employe, Equipe, Projet
WHERE Nom_Projet = ‘Sirius’
AND #Projet = #Projet_Equipe
AND #Equipe = #Appartenance
AND DaeNais=1973
Π Nom
SELECT Nom
FROM Employe, Equipe, Projet
WHERE Nom_Projet = ‘Sirius’
AND #Projet = #Projet_Equipe
AND #Equipe = #Appartenance
AND DaeNais=1973
Π Nom
SELECT Nom
FROM Employe, Equipe, Projet
WHERE Nom_Projet = ‘Sirius’
AND #Projet = #Projet_Equipe
AND #Equipe = #Appartenance
AND DaeNais=1973
Projet
Employe Equipe
©Maude Manouvrier - Univ. Paris Dauphine 49
Chap. III - Optimisation
Π Nom
SELECT Nom
FROM Employe, Equipe, Projet
rojet = ‘Sirius’
WHERE Nom_Projet
t = #Projet_Equipe
AND #Projet *
e = #Appartenance
AND #Equipe
s=1973
AND DaeNais=1973
* Projet
Proje
Employe
l Equipe
©Maude Manouvrier - Univ. Paris Dauphine 49
Chap. III - Optimisation
Π Nom
SELECT Nom
FROM Employe, Equipe, Projet
rojet = ‘Sirius’
WHERE Nom_Projet
t = #Projet_Equipe
AND #Projet *
e = #Appartenance
AND #Equipe
s=1973
AND DaeNais=1973
* Projet
Proje
Employe
l Equipe
©Maude Manouvrier - Univ. Paris Dauphine 49
Chap. III - Optimisation
Π Nom
σ (Nom_Projet=‘Siruis’) ∧ (#Projet=#Projet_Equipe) ∧
(#Equipe=#Appartenance) ∧ (DateNais=1973)
SELECT Nom
pe, Projet
FROM Employe, Equipe,
rojet = ‘Sirius’
WHERE Nom_Projet
t = #Projet_Equipe
AND #Projet *
e = #Appartenance
AND #Equipe
s=1973
AND DaeNais=1973
* Projet
Proje
Employe
l Equipe
©Maude Manouvrier - Univ. Paris Dauphine 49
Chap. III - Optimisation
Π Nom
σ (Nom_Projet=‘Siruis’) ∧ (#Projet=#Projet_Equipe) ∧
(#Equipe=#Appartenance) ∧ (DateNais=1973)
SELECT Nom
pe, Projet
FROM Employe, Equipe,
rojet = ‘Sirius’
WHERE Nom_Projet
t = #Projet_Equipe
AND #Projet *
e = #Appartenance
AND #Equipe
s=1973
AND DaeNais=1973
* Projet
Proje
Employe
l Equipe
©Maude Manouvrier - Univ. Paris Dauphine 49
Chap. III - Optimisation
Π Nom
σ (Nom_Projet=‘Siruis’) ∧ (#Projet=#Projet_Equipe) ∧
(#Equipe=#Appartenance) ∧ (DateNais=1973)
SELECT Nom
pe, Projet
FROM Employe, Equipe,
rojet = ‘Sirius’
WHERE Nom_Projet
t = #Projet_Equipe
AND #Projet *
e = #Appartenance
AND #Equipe
s=1973
AND DaeNais=1973
* Projet
Proje
Employe
l Equipe
©Maude Manouvrier - Univ. Paris Dauphine 49
Chap. III - Optimisation
Π Nom
σ(Nom_Projet=‘Siruis’)
Division des
σ (#Projet=#Projet_Equipe)
conjonctions de
sélections σ(#Equipe=#Appartenance)
σ(DateNais=1973)
*
* Projet
Employe Equipe
©Maude Manouvrier - Univ. Paris Dauphine 50
Chap. III - Optimisation
Π Nom
σ (#Projet=#Projet_Equipe)
Ré-ordonnancement
des sélections et *
application des
sélections les plus σ(#Equipe=#Appartenance)
sélectives en premier
*
σ(Nom_Projet=‘Siruis’)
σ(DateNais=1973) Equipe
Projet
Employe
©Maude Manouvrier - Univ. Paris Dauphine 51
Chap. III - Optimisation
Π Nom
Transformation des
∞ (#Projet=#Projet_Equipe)
produits cartésiens en
jointure
∞ (#Equipe=#Appartenance)
σ(Nom_Projet=‘Siruis’)
σ(DateNais=1973) Equipe
Projet
Employe
Π Nom
Ré-ordonnancement
∞ (#Equipe=#Appartenance)
des jointures (les plus
sélectives en premier)
∞ (#Projet=#Projet_Equipe)
σ(DateNais=1973)
σ(Nom_Projet=‘Siruis’)
Equipe
Employe
Projet
Π#Projet Employe
σ(Nom_Projet=‘Siruis’) Π#Projet_Equipe, #Equipe
Projet Equipe
©Maude Manouvrier - Univ. Paris Dauphine 54
Chap. III - Optimisation
Statistiques (1/2)
• Pour chaque relation R [CBS98] :
♦ NTuples(R) : nombre de nuplets
♦ Bfactor(R) : nombre de nuplets par bloc
♦ NBlocks(R) : nombre de blocs pour la relation
NBlocks(R) =
• Pour chaque attribut A de R :
♦ NDistinctA(R) : nombre de valeurs distinctes de A
♦ MinA(R) et MaxA(R) : valeurs min et max de A
♦ SCA(R) : nombre moyen de nuplets satisfaisant un prédicat sur A
Stratégies :
• Recherche linéaire (fichier non ordonné sans index)
• Recherche binaire (fichier ordonné sans index)
• Condition d’égalité sur la valeur d’une fonction de hachage
• Condition d’égalité sur la clé primaire
• Condition d’inégalité sur la clé primaire
• Condition d’égalité sur la clé d’un index secondaire clustered
• Condition d’égalité sur la clé d’un index secondaire unclustered
• Condition d’inégalité sur un index secondaire en arbre B+
©Maude Manouvrier - Univ. Paris Dauphine 57
Coût de σp(R)
Chap. III - Optimisation
σ NSS = 273...( e )
Coût de R ∞F S
Stratégies d’implantations de la jointure :
• Boucles imbriquées (Block nested loop join)
• Boucles imbriquées en utilisant un index
(Indexed nested loop join)
• Tri-fusion (Sort-merge join)
• Hachage (Hash join)
Pour chaque algorithme, possibilité de le faire en multi-passes
Cardinalité de la R ∞F S
• NTuples(R ∞F S) ≤ NTuples(R) * NTuples(S)
• Lorsque le prédicat est R.A=S.B
♦ Si A est clé de R : NTuples(R ∞F S) ≤ NTuples(S)
♦ Si ni A ni B ne sont clés :
Tri-Fusion
3 5 4 6 15
7 10 13 1 11
disque
2 9 8 12 20
3 5 4 6 15
7 10 13 1 11
disque
2 9 8 12 20
3 5 4 6 15
7 10 13 1 11
disque
2 9 8 12 20
3 5 4 6 15
7 10 13 1 11
disque
2 9 8 12 20
3 5 4 6 15
7 10 13 1 11
disque
2 9 8 12 20
3 5 4 6 15
7 10 13 1 11
disque
2 9 8 12 20
3 5 4 6 15
7 10 13 1 11
disque
2 9 8 12 20
23 5 4 6 15
37 10 13 1 11
disque
52 9 8 12 20
23 5 4 6 15
37 10 13 1 11
disque
52 9 8 12 20
23 5 4 6 15
37 10 13 1 11
disque
52 9 8 12 20
23 5 4 6 15
37 10 13 1 11
disque
52 9 8 12 20
23 5 4 6 15
37 10 13 1 11
disque
52 9 8 12 20
23 57 4 6 15
37 9
10 13 1 11
disque
52 10
9 8 12 20
23 57 4 6 15
37 9
10 13 1 11
disque
52 10
9 8 12 20
23 57 41 6 15
37 9
10 13
4 1 11
disque
52 10
9 86 12 20
23 57 41 68 15
37 9
10 13
4 1
12 11
disque
52 10
9 86 12
13 20
23 57 41 68 15
37 9
10 13
4 1
12 11
disque
52 10
9 86 12
13 20
23 57 41 68 15
37 9
10 13
4 1
12 11
disque
52 10
9 86 12
13 20
23 57 41 68 15
11
37 9
10 13
4 1
12 11
15
disque
52 10
9 86 12
13 20
3 5 4 6 15
Ensemble de
7 10 13 1 11 départ
2 9 8 12 20
2 7 1 8 11
3 9 4 12 15 disque
5 10 6 13 20
2 7 1 8 11
3 9 4 12 15 disque
5 10 6 13 20
2 7 1 8 11
3 9 4 12 15 disque
5 10 6 13 20
2 7 1 8 11
3 9 4 12 15 disque
5 10 6 13 20
2 7 1 8 11
3 9 4 12 15 disque
5 10 6 13 20
2 7 1 8 11
3 9 4 12 15 disque
5 10 6 13 20
2 7 1 8 11
3 9 4 12 15 disque
5 10 6 13 20
12 7 1 8 11
23 9 4 12 15 disque
35 10 6 13 20
12 7 1 8 11
23 9 4 12 15 disque
35 10 6 13 20
12 7 1 8 11
23 9 4 12 15 disque
35 10 6 13 20
12 7 1 8 11
23 9 4 12 15 disque
35 10 6 13 20
12 7 1 8 11
23 9 4 12 15 disque
35 10 6 13 20
12 7 1 8 11
23 9 4 12 15 disque
35 10 6 13 20
12 7 1 8 11
23 9 4 12 15 disque
35 10 6 13 20
12 47 1 8 11
23 59 4 12 15 disque
35 10
6 6 13 20
12 47 1 8 11
23 59 4 12 15 disque
35 10
6 6 13 20
12 47 71 8 11
23 59 84 12 15 disque
35 10
6 96 13 20
12 47 71 8
10 11
23 59 84 12 15 disque
35 10
6 96 13 20
3 5 4 6 15
Ensemble de
7 10 13 1 11 départ
2 9 8 12 20
Ces opérations
ont été ajoutées
par rapport à
l’exécution de
la requête
précédente
Temps d’extraction des données : 250 ms (pour un requête
donnant le même résultat que précédemment)
©Maude Manouvrier - Univ. Paris Dauphine 70
Chap. III - Optimisation
Temps
d’extraction
des données :
200ms
Temps
d’extraction
des données :
200ms
♦ Par hachage
1 2 1 2 2 2
entrée entrée
2 3 1 3 3
1 1
Page Page
résultat résultat
Etape 2 : la valeur 1 est la plus petite Etape 3 : la valeur 1 est la plus petite
valeur, on l’écrit dans le résultat et on valeur, on l’écrit dans le résultat et on
supprime les doublons supprime les doublons ...
©Maude Manouvrier - Univ. Paris Dauphine 85
Chap. IV - Gestion de la concurrence
Transaction : action ou série d’actions d’un utilisateur
ou d’une application, qui accède(nt) ou modifie(nt) les
données de la base
[BEGIN TRANSACTION]
…
COMMIT / ROLLBACK
Virement =
2 opérations atomiques
+ 100
CODEVI 110
+ 100
= 210
+ 100
CODEVI 110
+ 100
= 210
+ 100
CODEVI 110
+ 100
= 210
+ 100
CODEVI 110
+ 100
110
= 210
+ 100
CODEVI 110
Compte courant = 400
CODEVI = 110 + 100
110
= 210
Appelez la banque !!!
Virement = 1 transaction
de 2 opérations
atomiques
Begin transaction
1. Retrait
- 100
Compte courant 500
Virement = 1 transaction – 100
de 2 opérations = 400
2. Dépôt
atomiques
+ 100
CODEVI 110
+ 100
= 210
Begin transaction
1. Retrait
- 100
Compte courant 500
Virement = 1 transaction – 100
de 2 opérations = 400
2. Dépôt
atomiques
+ 100
CODEVI 110
Commit transaction + 100
= 210
Begin transaction
1. Retrait
- 100
Compte courant 500
Virement = 1 transaction 500 – 100
de 2 opérations - 100 = 400
2. Dépôt = 400
atomiques
+ 100
CODEVI 110
110 + 100
Commit transaction
+ 100 = 210
= 210
Begin transaction
1. Retrait
- 100
Compte courant 500
– 100
= 400
2. Dépôt
+ 100
CODEVI
110
Begin transaction
1. Retrait
Que se passe-t-il si le
Dépôt échoue ? - 100
Compte courant 500
– 100
= 400
2. Dépôt
+ 100
CODEVI
110
Begin transaction
1. Retrait
Que se passe-t-il si le
Dépôt échoue ? - 100
Compte courant 500
– 100
= 400
2. Dépôt
+ 100
CODEVI
110
Begin transaction
1. Retrait
Que se passe-t-il si le
Dépôt échoue ? - 100
Compte courant 500
– 100
= 400
2. Dépôt
+ 100
CODEVI
110
Rollback transaction
Begin transaction
1. Retrait
Que se passe-t-il si le
Dépôt échoue ? - 100
Compte courant 500
– 100
500 = 400
2. Dépôt
+ 100
CODEVI
110
Rollback transaction
110
Begin transaction
1. Retrait
Que se passe-t-il si le
Dépôt échoue ? - 100
Compte courant 500
Compte courant = 500 – 100
500 = 400
CODEVI = 110 2. Dépôt
Recommencez ! + 100
CODEVI
110
Rollback transaction
110
• Gestionnaire de transactions :
♦ Coordination des actions des différentes transactions
♦ En communication avec l’ordonnanceur
• Ordonnanceur (scheduler):
♦ Maintien de la cohérence
♦ Gestion des verrous (gestionnaire de verrous)
• Gestionnaire de pannes (recovery manager)
Remise de la base de données dans un état cohérent après panne
©Maude Manouvrier - Univ. Paris Dauphine 92
Chap. IV - Concurrence
Ordonnancement
• Opération d’une transaction T
♦ RT (i) : lecture de l’item i par T
♦ WT (i) : modification de la valeur de l’item i par T
♦ CommitT : validation de T
♦ AbortT : annulation de T
• Ordonnancement de transactions
Liste d’actions de plusieurs transactions T1, …, Tn telle que
chaque opération de Ti apparaisse dans le même ordre dans Ti
et dans l’ordonnancement
• Ordonnancement séquentiel
Pas d’entrelacement des actions des différentes transactions
©Maude Manouvrier - Univ. Paris Dauphine 93
Concurrence
Chap. IV - Concurrence
• Transactions concurrentes
Deux transactions accédant en même temps aux mêmes items
• Ordonnancement sérialisable
♦ Résultat équivalent au résultat d’un ordonnancement
séquentiel
♦ Les items voient passer toutes les transactions dans le même
ordre
• Anomalies dues à l’entrelacement des transactions
♦ Pas de conflit si accès simultanés à un même item en lecture
par deux transactions différentes
♦ Pas de conflit si accès simultanés à deux items différents en
lecture ou écriture par deux transactions
©Maude Manouvrier - Univ. Paris Dauphine 94
Chap. IV - Concurrence
Odonnancement sérialisable
T1: Solde A - x; Solde B + x;
T2 : Solde A - y; Solde B + y;
T3 : Solde A - z; Solde B + z;
Exécution séquentielle : T1 T2 T3
Une exécution sérialisable équivalente à T1 T2 T3 :
Solde A - x;
Solde A - y; L’item A voit passer les transaction
Solde B + x; dans l’ordre T1 T2 T3
Solde A - z; L’item B voit passer les transaction
dans l’ordre T1 T2 T3
Solde B + y;
Solde B + z;
©Maude Manouvrier - Univ. Paris Dauphine 95
Chap. IV - Concurrence
Conflits
• Ecriture - Lecture :
♦ Lecture impropre ou parasite (dirty read)
♦ Placement momentanée de la base dans un état incohérent
♦ Annulation en cascade de transactions
• Lecture - Ecriture :
♦ Lecture non reproductible (unrepeatable read)
♦ Incohérence
• Ecriture- Ecriture :
Perte de mises à jour (blind write)
• Degré 1
Pas d’annulation en cascade + Degré 0
• Degré 2
Pas de lecture impropre + Degré 1
• Degré 3
Isolation totale - Mise en attente des transactions en conflit
©Maude Manouvrier - Univ. Paris Dauphine 98
Graphe de précédence
Chap. IV - Concurrence
T2
T1 T3
T2
T1 T3
T2
T1 T3
T2
A
T1 T3
T2
A
T1 T3
T2
A
T1 T3
T2
B A
T1 T3
VP1(A), R1(A), VX2(B), W2(B), VP1(B), VP3(C), R3(C), VX2(C), VX4(A), VX3(A)
T1 T3
T4
VP1(A), R1(A), VX2(B), W2(B), VP1(B), VP3(C), R3(C), VX2(C), VX4(A), VX3(A)
T1 T3
T4
VP1(A), R1(A), VX2(B), W2(B), VP1(B), VP3(C), R3(C), VX2(C), VX4(A), VX3(A)
T4
VP1(A), R1(A), VX2(B), W2(B), VP1(B), VP3(C), R3(C), VX2(C), VX4(A), VX3(A)
T4
VP1(A), R1(A), VX2(B), W2(B), VP1(B), VP3(C), R3(C), VX2(C), VX4(A), VX3(A)
T4
VP1(A), R1(A), VX2(B), W2(B), VP1(B), VP3(C), R3(C), VX2(C), VX4(A), VX3(A)
T4
VP1(A), R1(A), VX2(B), W2(B), VP1(B), VP3(C), R3(C), VX2(C), VX4(A), VX3(A)
T1 T3
T4
VP1(A), R1(A), VX2(B), W2(B), VP1(B), VP3(C), R3(C), VX2(C), VX4(A), VX3(A)
T4
VP1(A), R1(A), VX2(B), W2(B), VP1(B), VP3(C), R3(C), VX2(C), VX4(A), VX3(A)
T4
VP1(A), R1(A), VX2(B), W2(B), VP1(B), VP3(C), R3(C), VX2(C), VX4(A), VX3(A)
T4
VP1(A), R1(A), VX2(B), W2(B), VP1(B), VP3(C), R3(C), VX2(C), VX4(A), VX3(A)
T4
VP1(A), R1(A), VX2(B), W2(B), VP1(B), VP3(C), R3(C), VX2(C), VX4(A), VX3(A)
T4
VP1(A), R1(A), VX2(B), W2(B), VP1(B), VP3(C), R3(C), VX2(C), VX4(A), VX3(A)
T4
VP1(A), R1(A), VX2(B), W2(B), VP1(B), VP3(C), R3(C), VX2(C), VX4(A), VX3(A)
T4
VP1(A), R1(A), VX2(B), W2(B), VP1(B), VP3(C), R3(C), VX2(C), VX4(A), VX3(A)
T4
VP1(A), R1(A), VX2(B), W2(B), VP1(B), VP3(C), R3(C), VX2(C), VX4(A), VX3(A)
A
T4
VP1(A), R1(A), VX2(B), W2(B), VP1(B), VP3(C), R3(C), VX2(C), VX4(A), VX3(A)
A
T4
VP1(A), R1(A), VX2(B), W2(B), VP1(B), VP3(C), R3(C), VX2(C), VX4(A), VX3(A)
A
T4
VP1(A), R1(A), VX2(B), W2(B), VP1(B), VP3(C), R3(C), VX2(C), VX4(A), VX3(A)
A
T4
VP1(A), R1(A), VX2(B), W2(B), VP1(B), VP3(C), R3(C), VX2(C), VX4(A), VX3(A)
A A
T4
VP1(A), R1(A), VX2(B), W2(B), VP1(B), VP3(C), R3(C), VX2(C), VX4(A), VX3(A)
A A
T4
Cycle dans le graphe d’attente ⇒
détection d’un inter-blocage ⇒
Annulation de T3
• Théorème
Un ordonnancement obtenu par le protocole V2P est
sérialisable
• Inconvénients
Risque d’annulation de transactions en cascade et d’inter-blocages
Protocole V2P :
Protocole V2P :
Protocole V2P :
Protocole V2P :
Protocole V2P :
Protocole V2P :
Protocole V2P :
Protocole V2P :
Protocole V2P :
R1(x)
VP1(y) R1(y)
VP2(x) R2(x)
©Maude Manouvrier - Univ. Paris Dauphine 106
Chap. IV - Concurrence
VP1(y) R1(y)
VP2(x) R2(x)
©Maude Manouvrier - Univ. Paris Dauphine 106
Chap. IV - Concurrence
R2(x)
VP2(x) R2(x)
VP2(x) R2(x)
VP2(x) R2(x)
VP2(x) R2(x)
R1(y)
©Maude Manouvrier - Univ. Paris Dauphine 107
Chap. IV - Concurrence
VP2(x) R2(x)
VP1(y) R1(y)
©Maude Manouvrier - Univ. Paris Dauphine 107
Chap. IV - Concurrence
x y
Ti Tj RTS WTS RTS WTS Ti + ancienne que Tj
100 125 0 0 0 0
x y
Ti Tj RTS WTS RTS WTS Ti + ancienne que Tj
100 125 0 0 0 0
Wi(x)
x y
Ti Tj RTS WTS RTS WTS Ti + ancienne que Tj
100 125 0 0 0 0
Wi(x) 100
x y
Ti Tj RTS WTS RTS WTS Ti + ancienne que Tj
100 125 0 0 0 0
Wi(x) 100
Rj(y)
x y
Ti Tj RTS WTS RTS WTS Ti + ancienne que Tj
100 125 0 0 0 0
Wi(x) 100
Rj(y) 125
x y
Ti Tj RTS WTS RTS WTS Ti + ancienne que Tj
100 125 0 0 0 0
Wi(x) 100
Rj(y) 125
Ri(y)
x y
Ti Tj RTS WTS RTS WTS Ti + ancienne que Tj
100 125 0 0 0 0
Wi(x) 100
Rj(y) 125
Ri(y) TS(Ti) >WTS(y) et la dernière
transaction la plus récente ayant lu y
est toujours Tj
x y
Ti Tj RTS WTS RTS WTS Ti + ancienne que Tj
100 125 0 0 0 0
Wi(x) 100
Rj(y) 125
Ri(y) 125 TS(Ti) >WTS(y) et la dernière
transaction la plus récente ayant lu y
est toujours Tj
x y
Ti Tj RTS WTS RTS WTS Ti + ancienne que Tj
100 125 0 0 0 0
Wi(x) 100
Rj(y) 125
Ri(y) 125 TS(Ti) >WTS(y) et la dernière
transaction la plus récente ayant lu y
est toujours Tj
Rj(x)
x y
Ti Tj RTS WTS RTS WTS Ti + ancienne que Tj
100 125 0 0 0 0
Wi(x) 100
Rj(y) 125
Ri(y) 125 TS(Ti) >WTS(y) et la dernière
transaction la plus récente ayant lu y
est toujours Tj
Rj(x) TS(Tj) > WTS(x) ⇒ la dernière
transaction ayant mis à jour x est plus
ancienne que Tj ⇒ écriture autorisée
x y
Ti Tj RTS WTS RTS WTS Ti + ancienne que Tj
100 125 0 0 0 0
Wi(x) 100
Rj(y) 125
Ri(y) 125 TS(Ti) >WTS(y) et la dernière
transaction la plus récente ayant lu y
est toujours Tj
Rj(x) 125 TS(Tj) > WTS(x) ⇒ la dernière
transaction ayant mis à jour x est plus
ancienne que Tj ⇒ écriture autorisée
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Wi(x)
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Wi(x) 99
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Wi(x) 99
Rj(y)
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Wi(x) 99
Rj(y) 80
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Wi(x) 99
Rj(y) 80
Ri(y)
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Wi(x) 99
Rj(y) 80
Ri(y) 99
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Wi(x) 99
Rj(y) 80
Ri(y) 99
Rj(x)
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Wi(x) 99
Rj(y) 80
Ri(y) 99
x y
Ti Tj RTS WTS RTS WTS Ti + ancienne que Tj
100 125 0 0 0 0
x y
Ti Tj RTS WTS RTS WTS Ti + ancienne que Tj
100 125 0 0 0 0
Ri(x)
x y
Ti Tj RTS WTS RTS WTS Ti + ancienne que Tj
100 125 0 0 0 0
Ri(x) 100
x y
Ti Tj RTS WTS RTS WTS Ti + ancienne que Tj
100 125 0 0 0 0
Ri(x) 100
Rj(y)
x y
Ti Tj RTS WTS RTS WTS Ti + ancienne que Tj
100 125 0 0 0 0
Ri(x) 100
Rj(y) 125
x y
Ti Tj RTS WTS RTS WTS Ti + ancienne que Tj
100 125 0 0 0 0
Ri(x) 100
Rj(y) 125
Ri(y)
x y
Ti Tj RTS WTS RTS WTS Ti + ancienne que Tj
100 125 0 0 0 0
Ri(x) 100
Rj(y) 125
Ri(y) TS(Ti) >WTS(y) ⇒ la dernière
transaction la plus récente ayant lu y
est toujours Tj
x y
Ti Tj RTS WTS RTS WTS Ti + ancienne que Tj
100 125 0 0 0 0
Ri(x) 100
Rj(y) 125
Ri(y) 125 TS(Ti) >WTS(y) ⇒ la dernière
transaction la plus récente ayant lu y
est toujours Tj
x y
Ti Tj RTS WTS RTS WTS Ti + ancienne que Tj
100 125 0 0 0 0
Ri(x) 100
Rj(y) 125
Ri(y) 125 TS(Ti) >WTS(y) ⇒ la dernière
transaction la plus récente ayant lu y
est toujours Tj
Wj(x)
x y
Ti Tj RTS WTS RTS WTS Ti + ancienne que Tj
100 125 0 0 0 0
Ri(x) 100
Rj(y) 125
Ri(y) 125 TS(Ti) >WTS(y) ⇒ la dernière
transaction la plus récente ayant lu y
est toujours Tj
Wj(x) TS(Tj) >RTS(x) ⇒ la dernière
transaction ayant lu x est plus
ancienne que Tj ⇒ écriture autorisée
x y
Ti Tj RTS WTS RTS WTS Ti + ancienne que Tj
100 125 0 0 0 0
Ri(x) 100
Rj(y) 125
Ri(y) 125 TS(Ti) >WTS(y) ⇒ la dernière
transaction la plus récente ayant lu y
est toujours Tj
Wj(x) 125 TS(Tj) >RTS(x) ⇒ la dernière
transaction ayant lu x est plus
ancienne que Tj ⇒ écriture autorisée
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Ri(x)
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Ri(x) 99
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Ri(x) 99
Rj(y)
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Ri(x) 99
Rj(y) 80
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Ri(x) 99
Rj(y) 80
Ri(y)
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Ri(x) 99
Rj(y) 80
Ri(y) 99
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Ri(x) 99
Rj(y) 80
Ri(y) 99
Wj(x)
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Ri(x) 99
Rj(y) 80
Ri(y) 99
Tj aurait dû modifier la
Wj(x) valeur de x avant que Ti,
plus récente, ne la lise ⇒
annulation de Tj
©Maude Manouvrier - Univ. Paris Dauphine
112
Chap. IV - Concurrence
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Wi(x)
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Wi(x) 99
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Wi(x) 99
Rj(y)
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Wi(x) 99
Rj(y) 80
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Wi(x) 99
Rj(y) 80
Ri(y)
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Wi(x) 99
Rj(y) 80
Ri(y) 99
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Wi(x) 99
Rj(y) 80
Ri(y) 99
Wj(x)
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Wi(x) 99
Rj(y) 80 Tj aurait dû modifier la
valeur de x avant que Ti,
Ri(y) 99 plus récente, ne la modifie
⇒ si l’ordre des estampilles
avait été suivi, la MàJ de Tj
Wj(x) aurait été remplacée par celle
de Ti (règles de Thomas)
x y
Ti Tj RTS WTS RTS WTS Ti + récente que Tj
99 80 0 0 0 0
Wi(x) 99
Rj(y) 80 Tj aurait dû modifier la
valeur de x avant que Ti,
Ri(y) 99 plus récente, ne la modifie
⇒ si l’ordre des estampilles
avait été suivi, la MàJ de Tj
Wj(x) aurait été remplacée par celle
de Ti (règles de Thomas)
⇒ L’opération Wj(x) est ignorée, et
©Maude Manouvrier - Univ. Paris Dauphine
Tj n’est pas annulée 113
Chap. IV - Concurrence
Estampillage multiversion
Ti Tj Tk Tn A0 A150 A200
150 200 175 252
Ri(A) Lue
Wi(A) Crée
Rj(A) Lue
Wj(A) Crée
Rk(A) Lue
Abort
Rn(A) Lue
Verrouillage hiérarchique
• Hiérarchie : relation, page, nuplet
• Intention d’obtenir un verrou partagé (IP) ou exclusif (IX)
• Protocole garantissant la sérialisation et évitant les inter-
blocages
IP IX VP VX
Matrice de
IP OUI OUI OUI OUI
compatibilité
IX OUI OUI NON NON des verrous et
des intentions
VP OUI NON OUI NON de verrous
VX NON NON NON NON
(2) VP
(2) VP
(2) VP
(4) VP
©Maude Manouvrier - Univ. Paris Dauphine
117
Chap. IV - Concurrence
(2) VP
(5) D
(4) VP
©Maude Manouvrier - Univ. Paris Dauphine
117
Chap. IV - Concurrence
(2) VP
(4) VX
©Maude Manouvrier - Univ. Paris Dauphine
118
Chap. IV - Concurrence
(4) VX
©Maude Manouvrier - Univ. Paris Dauphine
118
Chap. IV - Concurrence
(3) VX
©Maude Manouvrier - Univ. Paris Dauphine
119
Chap. IV - Concurrence
(3) VX
©Maude Manouvrier - Univ. Paris Dauphine
119
Chap. IV - Concurrence
Transactions et SQL2
• Une transaction commence dès la 1ère requête ou tout de
suite après un COMMIT ou un ROLLBACK
• Propriétés READ ONLY ou READ WRITE
• Degrés d’isolation
Degré Lecture Lecture Références
impropre non reproductible fantômes
READ UNCOMMITTED OUI OUI OUI
READ COMMITTED NON OUI OUI
REPEATABLE READ NON NON OUI
SERIALIZABLE NON NON NON
Ré-exécute la
• Procédures de reprise
• Algorithme ARIES
Pannes
• Fonctions du gestionnaire de pannes
♦ Atomicité
♦ Durabilité
Exemple
Journaux
• Journal ou log
Historique des modifications effectuées sur la base
• Journal des images avant (rollback segment)
♦ Valeurs des pages avant modifications
• Points de reprise
Processus de journalisation
Mémoire
Journal
BD
©Maude Manouvrier - Univ. Paris Dauphine
129
Gestion du journal
Chap. V - Panne
• Reprise à froid
Perte de tout ou partie de la mémoire secondaire
©Maude Manouvrier - Univ. Paris Dauphine
133
Algorithme ARIES (1/2)
Chap. V - Panne