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 B C D : : : : E2 L2 E5 L6 E3 L4 L1 L2 L5 L1 L3 E4 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 passet-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 circulaire : chaque nouvelle version entrée chasse la version la plus ancienne (tous granules confondus). Lors d’une lecture on recherche dans la table (ou sur disque) la version nécessaire si elle est disponible. Une lecture peut donc échouer et conduire à un abandon. Donnez en pseudo-code correspondants. les algorithmes LIRE et ÉCRIRE