Notion de transaction
Transcription
Notion de transaction
Exemple de transaction Transaction réservation(date, nbplace) select reste into r from RESERVATION where dateresa=:date si (r >= nbplace) alors update RESERVATION set reste=reste-:nbplace where dateresa=:date éditer-place(date, nbplace) panne COMMIT sinon afficher ‘ réservation impossible ’ ROLLBACK finsi Fin transaction Transaction virement(nocpte1, nocpte2, montant) select solde into s from COMPTE where nocompte=:nocpte1 si (s >= montant) alors update COMPTE set solde=solde-:montant where nocompte=:nocpte1 panne update COMPTE set solde=solde+:montant where nocompte=:nocpte2 COMMIT sinon afficher ‘ opération impossible ’ ROLLBACK finsi Fin transaction Aspects systèmes - 1 Une transaction doit être soit: Complètement exécutée: toutes les opérations ont été réalisées avec succès; Pas du tout exécutée: la transaction ne doit pas avoir eu d' effet ni sur la base, ni sur les autres transactions. Atomicité d' une transaction nécessité de défaire la partie de transaction exécutée afin de rétablir une BD cohérente: La transaction peut être interrompue en cours de traitement: Crash système; Erreur système ou erreur au sein de la transaction; Exceptions, violation de CI; Contrôle de concurrence; Crash MS; Problèmes physiques. L' exécution parallèle de plusieurs opérations ne doit pas être faite sans précautions (risque d ’erreurs) Sauvegardes et mémorisation des exécutions (journalisation), Procédure de reprise. Aspects systèmes - 2 ! Ensemble logique d' opérations élémentaires sur une BD (unité de traitements séquentiels). Une transaction fait passer la BD d' un état cohérent à un autre état cohérent Les état intermédiaires peuvent être incohérents. " Une transaction est une séquence d ’opérations qui doit être effectué dans sa totalité ou pas du tout (principe du tout ou rien). Mécanisme de validation (commit), système de reprise après panne. A C I D # Atomicity Consistency Isolation Durability " Une transaction doit faire passer la BD d' un état cohérent à un autre état cohérent (respect des CI). Développeurs d' application. Aspects systèmes - 3 $ " Une transaction ne doit pas laisser voir ses modifications à une autre transaction tant qu' elle n' est pas validée (COMMIT). Contrôle de concurrence. Image de la BD Les modifications réalisées par une transaction ne doivent pas être perdues une fois celle-ci validée. La fin de transaction est un point de nonretour, mécanisme de reprise. # Problèmes Principe de sérialisation Méthodes de contrôle de concurrence Exemple d' exécution Transaction T1 DEBUT A := Lire(X) A := A + 100 Transaction T2 DEBUT B := Lire(X) B := B + 100 X := Ecrire(A) FIN X := Ecrire(B) FIN Aspects systèmes - 4 % Résultat CI: X = Y Exemple d' exécution Hypothèse: X = 100 DEBUT DEBUT X =100, A=100 A := 200 X = 100, B=100 B := 200 Transaction T1 DEBUT A := Lire(X) A := A + 1 X := Ecrire(A) X = 200 FIN X = 200 FIN A := Lire(Y) A := A + 1 Y := Ecrire (A) Transaction T2 DEBUT B := Lire(X) B := B * 2 X := Ecrire(B) B := Lire(Y) B := B * 2 Y := Ecrire(B) FIN FIN % & Résultat Hypothèse: X= Y = 80. DEBUT A := 80 A := A + 1 = 81 X := 81 A := 160 A := A + 1 = 161 Y := 161 FIN Exemple d' exécution DEBUT B := 81 B := B * 2 = 162 X := 162 B := 80 B := B * 2 = 160 Y := 160 FIN Transaction T1 DEBUT A := Lire(X) A := A - 50 X := Ecrire(A) Transaction T2 DEBUT B := Lire(X) Annulation de T1 Aspects systèmes - 5 L' exécution concurrente des transactions doit être assurée afin d' optimiser l' utilisation des ressources et d' éviter les incohérences: Gérer l' exécution entrelacée; Contrôler l' accès aux mêmes ressources conflit lecture/écriture Exécution séquentielle des transactions = pas de problème. Objectif: ordonnancer les actions des transactions concurrentes de façon à produire le même résultat qu' une exécution séquentielle (principe de sérialisation) Détection des conflits d' accès aux objets par des transactions concurrentes. Aspects systèmes - 6