CONTROLE DE CONCURRENCE
Soit une base composée de 4 granules A, B, C, D et une exécution de
6 transactions T1 à T6. Les accès suivants ont été réalisés sur les
granules (Ei signifie écriture par la transaction i et Lj lecture par la
transaction j du granule indiqué) :
A : E2 E3 L5
B : L2 L4 L1
C : E5 L1 L3 E4
D : L6 L2 E3
Question 1 :
Dessiner le graphe de précédence. Que peut-on en conclure ?
Question 2 :
On suppose que les demandes se font dans l’ordre global suivant :
E2(A) L2(B) L6(D) E5(C) E3(A) L5(A) L1(C) L2(D) L3(C) E4(C) E3(D)
L4(B) L1(B)
Aucune transaction n'a relâché de verrous. L'algorithme utilisé est le
verrouillage deux phases. Donnez le graphe d'attente. Que se passe-
t-il ?
Question 3 :
On rappelle que pour l’algorithme d’estampillage multiversion, les
accès doivent être effectués dans l’ordre des estampilles des
transactions, saufs les lectures qui peuvent se produire en retard.
Une lecture en retard obtient la version qu’elle aurait dû lire si elle
était arrivée à son tour. Les écritures en retard provoquent par contre
un abandon de transaction.
Toujours avec l’ordre des accès de Q2, que se passe-t-il en
estampillage multiversion ?
Question 4 :
Pour gérer le multiversion on suppose que l’on dispose d’une table en
mémoire pouvant contenir 100.000 versions avec les estampilles
correspondantes (pour l’ensemble des granules). De plus on conserve
sur disque la dernière version produite de chaque granule.
On se propose de modifier l’algorithme d’estampillage multiversion de
la façon suivante : chaque nouvelle version d’un granule mis à jour
est écrite sur disque tandis que la version précédente est recopiée
dans la table en mémoire. Cette table est gérée comme une file