La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

GESTION DE TRANSACTIONS 1. Pourquoi une transaction Lier ensemble des opérations qui, logiquement sont indissociables et dont les effets ne peuvent être.

Présentations similaires


Présentation au sujet: "GESTION DE TRANSACTIONS 1. Pourquoi une transaction Lier ensemble des opérations qui, logiquement sont indissociables et dont les effets ne peuvent être."— Transcription de la présentation:

1 GESTION DE TRANSACTIONS 1

2 Pourquoi une transaction Lier ensemble des opérations qui, logiquement sont indissociables et dont les effets ne peuvent être envisagées séparément. Considérons un exemple dapplication bancaire 2

3 Exemple Lire compte courant de Mr X Retrancher 1000 DT Écrire résultat dans compte courant Lire compte professionnel de Mr X Ajouter 1000 DT Écrire résultat dans compte professionnel 3

4 Exemple suite Lire compte courant de Mr X Retrancher 1000 DT Écrire résultat dans compte courant Lire compte professionnel de Mr X Ajouter 1000 DT Écrire résultat dans compte professionnel 4 Panne

5 Exemple suite Debut-transaction Lire compte courant de Mr X Retrancher 1000 DT Écrire résultat dans compte courant Lire compte professionnel de Mr X Ajouter 1000 DT Écrire résultat dans compte professionnel Fin-Transaction 5 Panne Reprise du système jusquau début de la transaction

6 Cest quoi une transaction Une Transaction, une séquence atomique dactions sur une BD (lectures/écritures) séparant un commit ou un rollback du commit ou du rollback suivant. Chaque transaction doit laisser la BD dans un état cohérent après lavoir prise dans un état cohérent. Les utilisateurs peuvent spécifier des contraintes dintégrité simples sur les données et le SGBD se charge de les garder inviolables. En dehors de ça, le SGBD na pas conscience de la sémantique des données (ex., il ne comprend pas comment les intérêts dun compte bancaire sont calculés). Le fait quune transaction préserve la cohérence de la BD est au bout du compte de la responsabilité de lutilisateur! 6

7 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 7

8 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 8

9 Commit et Abort INTRODUCTION DACTIONS 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 (Rollback) Annulation de la transaction Défait toutes les mises à jour de la transaction 9

10 Schéma de transaction simple Fin avec succès ou échec Begin_Transaction update..... Commit ou Abort 10 - Provoque l'intégration réelle des mises à jour dans la base - Relâche les verrous - Provoque l'annulation des mises à jour - Relâche les verrous - Reprend la transaction

11 Effet logique 11 Mémoire de la transaction Update Commit Abort Bases de données Poubelle

12 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 Journal des images après Journal contenant les débuts de transactions, les valeurs d'enregistrement après mises à jour, les fins de transactions (commit ou abort) Il permet de refaire les mises à jour effectuées par une transaction 12

13 Journal des images avant Utilisé pour défaire les mises à jour : Undo 13 Page lue Base de données Page modifiée 1.Read 3.Update 4.Write 2.Log

14 Journal des images après Utilisé pour refaire les mises à jour : Redo 14 Page lue Base de données Page modifiée 1.Read 2.Update 4.Write 3.Log

15 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 15

16 16

17 3. 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 17

18 Stratégie do-undo Mises à jour en place l'objet est modifié dans la base Utilisation des images avant copie de l'objet avant mise à jour utilisée pour défaire en cas de panne 18 Mémoire cache Base Journal avant Update 1. LirePage 2. LogPage 3. WritePage Undo

19 Stratégie do-redo Mises à jour en différentiel l'objet est modifié en page différentielle (non en place=ombre) Utilisation des images après copie de l'objet en journal après mise à jour (do) utilisée pour refaire en cas de panne (redo) 19 Ombre Mémoire cache Base Update 1. LirePage 3. LogPage 2. WritePage Redo Journal après Commit

20 La gestion des buffers Bufferisation des journaux on écrit le journal lorsqu'un buffer est plein ou lorsqu'une transaction commet Bufferisation des bases on modifie la page en mémoire le vidage sur disque s'effectue en différé (processus E/S) Synchronisation journaux / base le journal doit toujours être écrit avant modification de la base ! 20

21 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)) 21

22 Problèmes de concurrence Objectifs de la concurrence: Permettre lexécution simultanée dun grand nombre de transactions Régler les conflits lecture / écriture Garder de très bonnes performances Éviter les blocages 22

23 Problème de concurrence Nécessité d'exécuter les programmes et requêtes de façon concurrente Garantir que lexécution simultanée de plusieurs programmes se fait correctement Cohérence de la base de données Exécution correcte des programmes Exemples de contextes hautement concurrentiels: annuaires téléphoniques (accès en lecture) systèmes de réservation de billets (lecture et mise à jour) 23

24 Inférences entre écrivains –Perte dopération (lost update) 24

25 Ecriture inconsistante (dirty write) 25

26 Inférences entre lecteurs et écrivains – lecture inconsistante ( dirty read) 26

27 … -lecture non reproductible ( non- repeatable read) 27

28 … -lecture fantôme ( phantom read) 28

29 Contrôle de concurrence Phénomènes indésirables : Lecture sale : Une transaction lit des données écrites par une transaction Lecture non reproductible : Une transaction lit de nouveau des données quil a lues précédemment et trouve que les données ont été modifiées par une autre transaction (qui a validé depuis la lecture initiale) Lecture fantôme : Une transaction ré-exécute une requête renvoyant un ensemble de lignes satisfaisant une condition de recherche et trouve que lensemble des lignes satisfaisant la condition a changé à cause dune transaction récemment validée. 29

30 Terminologie et Notation Ti: une transaction de numéro i. Ri: une opération de lecture (read) de Ti. Wi: une opération décriture (write) de Ti. Ri(x): une opération de lecture sur lobjet x, x étant un objet manipulé par Ti (p.e.: ligne, colonne, …). Wi(x): une opération décriture sur lobjet x. Exple: Transaction 1Transaction 2 R1(x) R2(x) x = x +5 R2(y) W1(x) R2(z) R1(y) x = x + y + z z = x + y W2(x) W1(z) 30

31 … Terminologie Ordonnancement ( schedule) T1 = R1(x), W1(x), R1(y), W1(Z) T2 = R2(x), R2(y), R2(z), W2(x) S={R1(x), W1(x), R1(y), W1(Z), R2(x), R2(y), R2(z), W2(x)} S est un ordonnancement en série (sériel, serial); toutes les opérations de T1 précèdent celles de T2 (+) Aucun conflit entre les transactions. (-) problème de performance Les mécanismes de contrôle de concurrence tentent dinterfolier ( interleave) les opérations de lecture et décriture de plusieurs transactions; de manière à toujours assurer un résultat identique à un ordonnancement en série. 31

32 Propriétés dexécution Recouvrabilité : Possibilité dannuler leffet dune transaction qui abandonne (abort). Solution : Ordre des Commit effectués par les transactions suit lordre de dépendances Lecture(X)/Ecriture(X). Exemple Conséquence sur lexemple : le nombre de places disponibles a été diminué par T1 et repris par T2, avant que T1 n annule ses réservations. Le nombre de sièges réservé sera plus grand que le nombre effectif de clients ayant validé leur réservation 32

33 Propriétés dexécution Sans Abandons en Cascade (Cascadeless) : la lecture dune valeur écrite par une transaction T ne peut se faire quune fois T a réalisé son Commit. Cascadeless ----> Recouvrable exemple Ici, le rollback de T1 intervient sans que T2 nait validé. Il faut alors impérativement que le système effectue également un rollback de T2 pour assurer la cohérence de la base : on parle dannulations en cascade (noter quil peut y avoir plusieurs transactions à annuler).. Solution :la lecture dune valeur écrite par une transaction T ne peut se faire quune fois T a réalisé son Commit. 33

34 Propriétés dexécution Strict : lécriture dune valeur déjà affectée par une autre transaction T ne peut se faire quune fois T a réalisé son Commit. Exemple Ici il ny a pas de dearty read mais une dearty write. En effet T1 a validé après que T2 ait écrit dans s. Donc la validation de T1 enregistre la mise-à-jour de T2 alors que celle-ci sapprête à annuler ses mises-à-jour par la suite. Au moment où T2 va annuler, le gestionnaire de transaction doit remettre la valeur du tuple connue au début de la transaction : ce qui revient à annuler la mise-à-jour de T1 Solution : Cascadeless + retarder les Write(X) jusquà ce que les écritures effectuées par dautres transactions sur X soient validées (commit). 34

35 Propriétés En résumé, on distingue trois niveaux de recouvrabilité selon le degré de contrainte imposé au système : 1. Recouvrabilité : on ne doit pas avoir à annuler une transaction déjà validée. 2. Annulation en cascade : un rollback sur une transaction ne doit pas entraîner lannulation dautres transactions. 3. Recouvrabilité stricte : deux transactions ne peuvent pas accéder simultanément en écriture à la même donnée, sous peine de ne pouvoir utiliser la technique de récupération de limage avant 35

36 Notion déquivalence Deux opérations sont conflictuelles ssi Elles opèrent sur le même objet, Au moins une des 2 opérations est une écriture, Chacune des opérations à une transaction différente. Exemple dopérations conflictuelles: T1 = R1(x), W1(x), R1(y), W1(Z) T2 = R2(x), R2(y), R2(z), W2(x) (R1(x), W2(x)), (W1(x), R2(x)), (W1(x), W2(x)), (W1(z), R2(z)) Deux exécutions sont équivalentes si: Les mêmes actions (lecture, écriture) se retrouvent dans les mêmes transactions Chaque paire de dactions conflictuelle (lecture/écriture, écriture/lecture ou écriture/écriture) sont ordonnées de la même façon dans les deux exécutions 36

37 Exécution sérialisable Une exécution S est sérialisable si S est équivalente à une exécution en série des mêmes transactions Exemple : Soit le programme réservation de spectacle, représenté par la séquence suivante : r(s) r(c) w(c) w(s) r : Lecture (Read) w : Ecriture (Write) s : Séance c : Client 37

38 Soient deux transactions T1 et T2, chacun voulant réserver des places pour la même séance pour deux clients distincts c1 et c2. Soit la situation suivante : Il reste 50 places libres pour la séance s T1 veut réserver 5 places pour la séance s T2 veut réserver 2 places pour la séance s Soit le déroulement imbriqué de ces deux réservations r1(s) r1(c1) r2(s) r2(c2) w2(s) w2(c2) w1(s) w1(c1) T1 lit s et c1 : places libres 50 T2 lit s et c2 : places libres 50 T2 écrit s : 50-2 = 48 T2 écrit le nouveau compte de c2 T1 écrit s : 50-5 = 45 T1 écrit le nouveau compte de c1 38 Pbm!! Il reste 45 places libres alors que 7 places ont été réservées : T2 lit et modifie une information que T1 a déjà lue en vue de la modifier Exécution sérialisable

39 Solution1 : Exécuter en série les transactions, on bloque une tant que la précédente na pas fini son exécution. r1(s) r1(c1) w1(s) w1(c1) r2(s) r2(c2) w2(s) w2(c2) Dans ce cas, pas de problèmes. T2 lit une donnée écrite par T1 qui a terminé son exécution et ne créera donc pas dinterférences. Cette solution nest pas acceptable, on ne peut pas se permettre de bloquer tous les utilisateurs sauf un, en attente dune transaction qui peut durer très longtemps 39

40 Exécution sérialisable Solution2 : Exécution entremele de T1et T2 r1(s) r1(c1) w1(s) r2(s) r2(c2) w2(s) w1(c1) w2(c2) T1 lit s et c1 : places libres 50 T1 écrit s = 50 – 5 = 45 T2 lit s : places libres 45 T2 lit c2 T2 écrit s = 45 – 2 = 43 T1 écrit le nouveau compte de c1 T2 écrit le nouveau compte de c2 Le résultat obtenu est le même obtenu par une exécution en série, on parle alors de sérialisabilité 40

41 Sérialisabilité Hypothèses: Exécution d'une transaction individuelle est correcte Exécution de transactions en série (les unes derrière les autres) est correcte Idée: se ramener à une exécution de transactions en série Concept de sérialisabilité 41

42 Exécutions de Transactions 42

43 Exécutions de Transactions 43

44 Sérialisabilité Sérialisabilité: Critère permettant de dire que l'exécution d'un ensemble de transactions (schedule) est correcte l'exécution de transactions entremêlées est correcte si elle est équivalente à une exécution des mêmes transactions en série (mêmes valeurs de départ et mêmes valeurs finales) on dit que cet ensemble de transactions est sérialisable 44

45 Exemple 45

46 Graphe de dépendances Il est possible de déterminer la sérialisabilité d'une exécution. On met en oeuvre des relations de précédence entre les transactions. Une fois toutes les relations de précédence établies, on peut générer un graphe dit de dépendance (précédence) Théorème: Une exécution est sérialisable ssi son graphe de dépendance ne comporte pas de cycle Graphe dépendances : Un noeud par transaction; liens de Ti à Tj si Tj effectue une lecture/écriture dune granule précédemment écrit par Ti, ou si Tj effectue une écriture dun granule précédemment lu par Ti. 46

47 Graphe de dépendances 1. Chaque transaction est un noeud du graphe; 2. Pour un objet O : Si une transaction T1 fait une écriture de l'objet O avant qu'une transaction T2 ne fasse une opération sur cet objet alors, dans le graphe, T1 précède T2 : Cette relation de précédence est concrétisée par un arc orientée de T1 vers T2. 3. Pour un objet O : Si une transaction T1 fait une lecture sur l'objet O avant qu'une transaction T2 ne fasse une opération d'éciture sur cet objet, alors, dans le graphe, T1 précède T2: 4. L'exécution est sérialisable si et seulement si le graphe ne présente aucun cycle. 47

48 Graphe de dépendances 48 T1T2T3 Lire (Y) Ecrire (Z) Lire (Y) Lire (X) Ecrire (Y) Ecrire (X) Lire (Z) Lire (Y) Ecrire (Y) Ecrire (X) Lire (X) Lire (Z) Ecrire (Y) - Définir pour chaque objet la liste des transactions qui accèdent a l'objet par ordre chronologique. - dresser le graphe pour determiner si cest serialisable ou non

49 Graphe de dépendances Pour L'objet X: Lecture de T1, Ecriture de T1, Lecture de T2, Ecriture de T2. Relation de précédence: T1 précède T2. Pour l'objet Y: Lecture de T2, Ecriture de T2, Lecture de T3, Ecriture de T3, Lecture de T1, Ecriture de T1. Relation de précédence: T2 ecrit avant T3 donc T2 précède T3; T3 ecrit avant T1 donc T3 précède T1. Pour l'objet Z: Lecture de T2, Lecture de T3, Ecriture de T3. Relation de précédence: Le fait que T2 lise avant que T3 ne lise ne provoque pas de conflit. Cependant, la précédence doit être exprimée ici, parce que T3 fait par la suite une opération d'écriture sur Z. 49

50 Graphe de dépendances Toutes les transactions sont représentées par des noeuds. On indique que T1 précède T2 en dessinant une flèche de T1 vers T2. Pour plus de clarté, on peut mettre sous chaque flèche, l'objet a partir duquel a été déduite la relation représentée par la flèche. Le graphe de précédence ressemble alors a ce qui suit: 50 T1 T2 T3 X Y,Z Y Lexécution donnée nest pas serialisable

51 Graphe de dépendances Exemple2 : 51 T1T2T3 Lire (Y) Ecrire (Z) Lire (Y) Lire (X) Ecrire (Y) Ecrire (X) Lire (Z) Lire (Y) Ecrire (Y) Ecrire (X) Lire (X) Lire (Z) Ecrire (Y)

52 Graphe de dépendances Pour L'objet X: Lecture de T1, Ecriture de T1, Lecture de T2, Ecriture de T2. Relations de précédence: On détermine sans difficulté que T1 précède T2. Pour l'objet Y: Lecture de T3, Ecriture de T3, Lecture de T1, Ecriture de T1, Lecture de T2, Ecriture de T2. Relations de précédence: T3 écrit avant T1 donc T3 précède T1; T3 écrit avant T2 donc T3 précède T2; T1 écrit avant T2 donc T1 précède T2. Pour l'objet Z: Lecture de T3, Ecriture de T3, Lecture de T2. Relations de précédence: T3 écrit avant T2 donc T3 précède T2. 52

53 Graphe de dépendances 53 T1 T2 T3 X,Y ZY Il n'y a pas de cycle dans ce graphe de sérialisabilite. Lexecution est serialisable.

54 Approche de la gestion de la concurrence Objectif: forcer la sérialisabilité Deux méthodes: Verrouillage Estampillage Verrouillage: Lidée est simple : on bloque laccès à une donnée dès quelle est lue ou écrite par une transaction (« pose de verrou») et on libère cet accès quand la transaction termine par commit ou rollback (« libération du verrou ») Le verrou partagé (SLocks) est typiquement utilisé pour permettre à plusieurs transactions concurrentes de lire la même ressource. Le verrou exclusif (XLocks) réserve la ressource en écriture à la transaction qui a posé le verrou. 54

55 Verrous exclusif : protocole PXO Définition: un verrou est dit exclusif s'il interdit toute autre obtention d'un verrou, de quelque type que ce soit, sur l'élément verrouillé, par une autre transaction. Verrous exclusifs avec libération explicite Toute demande daccès contient implicitement une demande de verrouillage (Lire XLire). Toute transaction qui a besoin dune ressource qui est actuellement verrouillée est mise en attente (FIFO). L'obtention du verrou autorise lectures et mises à jour Un verrou peut être relâché explicitement (XRelâcher) à nimporte quel moment. Au plus tard, il est relâché implicitement à la fin de la transaction. 55

56 Verrouillage exclusif: exemple et problèmes 56

57 Solutions des Interblocages Deux approches: Détection: laisser les transactions se mettre en interblocage, le détecter puis le résoudre. Grâce au graphe de dépendances : un interblocage: un cycle dans le graphe Quand faire la détection ? lors des demandes de verrouillage périodiquement après un certain temps dattente pour une transaction Action: tuer lune des transactions celle qui a fait le moins de maj la plus jeune celle qui a le moins de ressources allouées … Tuer: défaire (annuler ses maj, ses verrous) puis relancer automatiquement plus Tard Prévention: prévenir les interblocages. En pratique, solution détection la plus souvent utilisée car prévention plus coûteuse. 57

58 Prévention des interblocages Prévention par estampillage: Estampillage de chaque transaction avec lheure de lancement Si une transaction demande un verrou sur une ressource déjà verrouillée alors résolution dépend de l'estampille 58

59 Libération des verrous après écriture Prévention et détection des interblocages défaire des transactions problèmes dincohérence B a lu une valeur de E qui logiquement na jamais existé (fantôme), Suite au "Rollback" de A, B doit être défaite, ainsi que toutes les transactions qui ont lu une valeur écrite par B (ROLLBACK en cascade) Solution: ne relâcher un verrou exclusif quen fin de transaction (COMMIT ou ROLLBACK) Protocole PX (avec libération implicite) 59

60 Protocole PX Verrous exclusifs avec libération implicite Toute demande daccès contient implicitement une demande de verrouillage (Lire XLire). Toute transaction qui a besoin dune ressource qui est actuellement verrouillée est mise en attente (FIFO). L'obtention du verrou autorise lectures et mises à jour Le verrou nest relâché quen fin de transaction (plus de XRelâcher) 60

61 Verrous Partagés (S Lock) Les verrous exclusifs réduisent la simultanéité dexécution Des transactions effectuant uniquement des lectures pourraient sexécuter simultanément Il faut sassurer que pendant les lectures les éléments lus ne sont pas modifiés besoin d'un verrou partagé Plusieurs transactions peuvent obtenir un verrou partagé sur un même élément Aucune transaction ne peut obtenir un verrou exclusif sur un élément tant que tous les verrous partagés sur cet élément ne sont pas libérés 61

62 Verrous partagés: SLire E: si le verrou partagé ne peut être obtenu mise en attente sinon un verrou partagé est mis sur E et la lecture est effectuée SRelâcher E: libérer le verrou partagé détenu par la transaction sur E plus de nécessité de libérer le verrou à la fin de transaction car pas de mise à jour 62

63 Verrous partagés: Protocole Protocole PSX: pour mettre à jour un élément E de la base demande verrou partagé sur E (SLire E) Si E est déjà verrouillé en X mise en attente mise à jour XEcrire E: demande de changement du verrou S sur E en verrou X sur E comme en PX, le verrou exclusif nest libéré quen fin de transaction Inconvénient de PSX : augmentation des interblocages deux transactions voulant mettre à jour le même élément vont obtenir deux verrous partagés quensuite elles ne pourront transformer en verrous exclusifs (Les verrous de mise à jour remédient à ce problème, voir PUX) 63

64 Verrous de mise à jour (U) Protocole PUX: Toute transaction qui veut mettre à jour un élément E de la base doit: demander un verrou de mise à jour sur E ULire E Si E est déjà verrouillé en X ou U mise en attente pour la mise à jour sur E XEcrire E (demande de changement du verrou U en X) le verrou exclusif nest libéré quen fin de transaction 64

65 Verrous simples (X, S, U) Le protocole PUX et les verrous de mise à jour réduisent les cas dinterblocage réduisent aussi la concurrence Conclusion: les SGBD choisissent lun des protocoles PX, PX0, PSX ou PUX, en fonction du degré de concurrence voulu et du pourcentage dinterblocages toléré 65

66 Libération des verrous après lecture (verouillage à deux phases) 66

67 Verrouillage à deux phases Une transaction est à verrouillage à deux phases si : avant toute opération sur un élément, la transaction demande un verrou sur cet élément pour cette opération, et après avoir rendu un verrou, la transaction nen demande plus aucun Durant une première phase la transaction acquiert des verrous et durant une seconde phase elle les libère La deuxième phase peut être réduite à un instant si tous les verrous sont relâchés à la fin de la transaction 67

68 Verrouillage à deux phases… Théorème (important): si toutes les transactions sont à verrouillage à deux phases, alors toutes les exécutions entremêlées de ces transactions sont sérialisables 68

69 Contrôle par verrouillage à deux phases Exemple : T1 : r1 (x) w1 (y) C1 T2 : r2 (y) w2 (y) C2 Ordre de réception : r1 (x) r2 (y) w1 (y) C1 w2 (y) C2 r1 (x) exécutée r2 (y) exécutée w1 (y) retardée à cause de r2 (y) et tout le reste de T1 va être bloqué C1 bloqué w2 (y) exécutée C2 relâche les verrous sur y w1 (y) exécutée C1 exécutée Exécution correcte : r1 (x) r2 (y) w2 (y) C2 w1 (y) C1 Conflits : r2 (y) - w1 (y) ; w2 (y) - w1 (y) Pas de cycle, donc H sérialisable 69

70 Unité de verrouillage multiple Unités de verrouillage possibles: la base de données, un ensemble de relations, une relation, un tuple, une valeur (Plus unité fine, plus concurrence forte, plus overhead est grand) Unité élémentaire: unité la plus fine proposée par le système (c'est souvent le tuple) Unité composée: tout autre unité proposée par le système (c'est souvent la relation et la base de donnée) L'utilisateur la possibilité de choisir l'unité de verrouillage. Mais : comment le système peut il savoir quand il a une demande de verrou sur une table (par ex) qu'il n'y a pas de verrous sur un de ses tuples? Pas désirable de parcourir tous les verrous de la table… 70

71 Deux types de verrous Deux types de verrous: Verrous dintention (sur unité composée): intention de poser plus tard des verrous effectifs (S, X) sur les unités composantes Verrous effectifs (S, X vus précédemment). S et X peuvent être posés sur toute unité composée ou élémentaire Pour placer un verrou sur un élément, on doit partir de l'élément le plus haut (table/tuple/valeur). Si cet élément est celui que l'on souhaite verrouiller, on pose un verrou S ou X sur cet élément. Si l'élément que l'on souhaite verrouiller est plus bas alors poser un verrou d'intention sur l'élément qui le contient puis un verrou S ou X sur l'élément à verrouiller. 71

72 Verrous dintention Verrous dintention partagée (IS) : posé sur une unité composée C la transaction va demander des verrous partagés (S) sur certains éléments composants de C Verrou dintention exclusive (IX) : la transaction va demander un ou des verrous exclusifs (X) sur certains éléments composants de C, pour les mettre à jour verrou partagé avec intention exclusive (SIX): un verrou SIX est un verrou S posé sur une unité composée C et un verrou IX posé sur C. Il signifie que la transaction permet que d'autres lisent les éléments de C, mais qu'elle n'autorise aucune mise à jour, et de plus qu'elle annonce son intention de demander des verrous exclusifs sur des éléments de C pour les mettre à jour. 72

73 Protocole: PI Protocole demploi obtention dun verrou X sur une unité: obtention implicite dun verrou X sur tous les composants de lunité obtention dun verrou S sur une unité obtention implicite dun verrou S sur tous les composants de lunité pour demander un verrou S ou IS sur lunité E il faut avoir acquis un verrou IS (au moins) sur lunité contenant E pour demander un verrou X, IX sur lunité E il faut avoir acquis un verrou IX (au moins) sur lunité composée contenant E avant de libérer un verrou sur une unité E avoir auparavant libéré tous les verrous sur des composants de E Si plus de deux unités de verrouillage, les règles sappliquent récursivement 73

74 Matrice de compatibilité 74

75 Justification Soit un objet o contenu dans un objet O. Si une transaction veut lire o alors elle doit empêcher toute modification de O dans sa totalité. Pour lire o, elle le verrouille en mode S, ce qui implique de verrouiller O en mode IS, ce qui interdira à une autre transaction de verrouiller O en mode X et donc de modifier O dans sa totalité. Si une transaction veut modifier o alors elle doit empêcher toute lecture ou modification de O dans sa totalité. Pour modifier o, elle le verrouille en mode X, ce qui implique de verrouiller O en mode IX, ce qui interdira à une autre transaction de verrouiller O en mode S ou X et donc de lire ou de modifier Odans sa totalité. 75

76 Justification Le verrouillage en mode IX (resp. IS) de O par une transaction T 2 est accepté même sil a déjà été verrouillé en mode IS (resp. IX) par une transaction T 1 car il se peut que le sous-ensemble des objets de O lus (resp. modifiés) par T 1 soit disjoint du sous- ensemble des objets de O modifiés (resp. lus) par T 2. Dans le cas contraire, le verrouillage des objets communs en mode S ou X empêcherait le conflit. 76

77 Verrouillage en mode SIX Soit la relation: livre(isbn, titre, catégorie, prix) et la transaction T: UPDATE livre SET prix:= 1.25 * prix WHERE catégorie = 'roman'; Pour réaliser cette mise à jour, la transaction T doit demander un accès exclusif à la table livrepour empêcher toute modification de cette table durant lopération de mise à jour. Si T verrouille la table livre en mode exclusif alors elle ne pourra pas lire les n-uplets de livre pour sélectionner ceux qui doivent être mis à jour. Par contre, si T verrouille la table livre en mode SIX (accès partagé exclusif), alors elle et elle seule pourra verrouiller les lignes de cette table en mode S pour les lire afin de sélectionner ceux qui sont des romans, qui eux seront verrouillés en mode X afin dêtre modifiés. 77

78 Objets Fantômes: Problème 78

79 Objets Fantômes: Une solution 79

80 Techniques destampillage SGBD centralisé concurrence avec verrous Verrous: explicitement demandés ou acquis automatiquement lors des instructions de L/E Bases de données réparties peu compatibles avec un gestionnaire de verrous centralisé technique destampillage Transactions estampillées avec lheure de lancement Verrous: assurent que lexécution simultanée est équivalente à une exécution séquentielle quelconque Estampillage: assure que lexécution simultanée est équivalente à lexécution séquentielle correspondant à lordre chronologique des estampilles des transactions 80

81 Estampillage: Règles Toutes les transactions sexécutent simultanément Conflits: Une transaction demande à lire un élément déjà mis à jour par une transaction plus récente, Une transaction demande à mettre à jour un élément déjà lu ou mis à jour par une transaction plus récente Ces demandes doivent être rejetées: la transaction trop vieille est tuée et relancée avec une nouvelle estampille 81

82 Estampillage: résolution de conflits A chaque élément de la base sont associées deux valeurs: LMAX: estampille de la transaction la plus jeune qui a lu cet élément (sans avoir été tuée lors de cette lecture) EMAX: estampille de la transaction la plus jeune qui a écrit avec succès lélément (sans avoir été tuée lors du COMMIT) Si la transaction T demande à lire E (Lire E) si estampille(T) EMAX(E) /* estampille (T) plus jeune que EMAX(E) alors /*OK*/ LMAX(E):=Max(LMAX(E), estampille(T)) sinon /*conflit*/ Tuer T et relancer T avec une nouvelle estampille Si la transaction T demande à mettre à jour E (Ecrire E) si estampille(T) LMAX(E) et estampille(T) EMAX(E) alors /*OK*/ EMAX(E):=estampille(T) sinon /*conflit*/ Tuer T et relancer T avec une nouvelle estampille 82

83 Gestion des accès concurrents et SQL Il est possible en SQL de choisir explicitement le niveau de protection que l'on souhaite obtenir contre les incohérences résultant de la concurrence d'accès. Options possibles : 1) On spécifie qu'une transaction ne fera que des lectures SET TRANSACTION READ ONLY; 2) Une transaction peut lire et écrire (Option par défaut) SET TRANSACTION READ WRITE; 83

84 SQL2 et les propriétés des exécutions concurrentes La norme SQL2 spécifie que ces exécutions doivent être sérialisables (mode par défaut). Un verrouillage strict doit alors être assuré par le SGBD. SQL2 propose des options moins fortes : SET TRANSACTION ISOLATION LEVEL option Liste des options : 1. READ UNCOMMITTED : on autorise les lectures de tuples écrits par d'autres transactions mais non encore validées 2. READ COMMITED : on ne peut lire que les tuples validés (pas de verrou sur une donnée lue). C'est le mode par défaut d'ORACLE. 84


Télécharger ppt "GESTION DE TRANSACTIONS 1. Pourquoi une transaction Lier ensemble des opérations qui, logiquement sont indissociables et dont les effets ne peuvent être."

Présentations similaires


Annonces Google