1 / 31

Les Transactions

Les Transactions. Ait Ahmed Madjid Cohen Lior Jaballah Seddik Leborgne Fabien. Introduction. Beaucoup d'opérations sur une BD doivent être atomiques: Transfert d'argent entre les comptes: UPDATE Compte1 Val = Val -100 UPDATE Compte2 Val = Val + 100

zubeda
Download Presentation

Les Transactions

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Les Transactions Ait Ahmed Madjid Cohen Lior Jaballah Seddik Leborgne Fabien

  2. Introduction • Beaucoup d'opérations sur une BD doivent être atomiques: • Transfert d'argent entre les comptes: UPDATE Compte1 Val = Val -100 UPDATE Compte2 Val = Val + 100 • Si seulement une de ces requêtes est exécutée, la BD perd sa cohérence

  3. Transactions • Opérations atomiques inexprimables avec une requête relationnelle. • entièrement ou pas du tout • Préservant la consistance de la BD • Comme si l'usager était isolé sur la BD ***Notion de transactions ***

  4. Transactions: Les primitives • Notions: COMMIT, ROLLBACK • Sous Oracle les opérations sont placées dans un buffer en attendant d ’être finaliser. • =>Verrouillage des tables concernées • COMMIT: Finaliser une transaction, aucune annulation possible • ROLLBACK: Annuler une transaction, les opérations placées qui n ’ont pas été finalisées par un COMMIT sont effacées

  5. Transactions: Les primitives • Seul l'utilisateur ayant effectué les modifications les voit • Exemple: COMMIT, ROLLBACK Début TRANSACTION INSERT INTO Medicament VALUES (2, 'lexomil'); ROLLBACK; INSERT INTO medicament VALUES (3,  ’doliprane'); COMMIT; Fin • Seul doliprane a été inséré définitivement

  6. Remarque • Il existe plusieurs niveaux de ROLLBACK • Appel automatique si instruction erronée • Exemple: Insertion d ’un tuple dont la clé existe déjà

  7. Les points de sauvegarde • Permet de diviser une transaction en morceaux • SAVEPOINT Point1; • ... • ROLLBACK TO SAVEPOINT Point1;

  8. COMMIT Automatique • Il est possible de rendre la finalisation des opérations automatique • UTILISATION: « SET AUTOCOMMIT ON; » • Certaines opérations provoquent des COMMIT automatiquement • Liste des opérations

  9. Les opérations qui valident… toutes seules ALTER AUDIT NOAUDIT COMMENT CONNECT CREATE DISCONNECT DROP EXIT GRANT REVOKE QUIT RENAME

  10. Reconnaissance de transactions • Oracle affecte aux transactions un ID • Possibilité de nommer une transaction • SET TRANSACTION ... NAME • Possibilité de commenter un COMMIT • COMMIT COMMENT ‘mon commentaire ici’

  11. Les transactions en lecture seule • Possibilité de spécifier qu’une transaction est en lecture seule. • Gestion optimisé • Pas de verrous à gérer • Utilisation: SET TRANSACTION READ ONLY;

  12. Transactions autonomes • Définition: • Il s'agit d'une transaction au sein d'une transaction « primaire » qui est autonome par rapport à cette dernière. • Cas d'utilisation: • Il peut être utile dans certain cas que la base soit modifié même si la transaction est annulée.

  13. Exemple • La transaction autonome. CREATE OR REPLACE PROCEDURE TransAutonome IS PRAGMA AUTONOMOUS_TRANSACTION; BEGIN -- Transaction autonome et validation INSERT INTO Medicament VALUES (7, 'lexomil',15.2); INSERT INTO medicament VALUES (8, 'vitamine B',5.2); COMMIT; END; /

  14. Exemple (suite) • La transaction principale. CREATE OR REPLACE PROCEDURE lanceTransaction IS BEGIN -- Transaction principale INSERT INTO Medicament VALUES (9, 'aspro 500',5); -- lancement d'une transaction autonome TransAutonome(); -- Reprise de la transaction principale INSERT INTO Medicament VALUES (10, 'doliprane 200',8); -- Invalidation de la transaction principale ROLLBACK; END; /

  15. Exemple (fin) • Résultat. • La base contient ces information après l'annulation de la transaction principale: • ID_M NOM_M PRIX_M • ---------- -------------------- ---------- • 8 vitamine B 5.2 • 7 lexomil 15.2 • Les opérations réalisées dans la transaction autonome ont été conservées malgré l'annulation de la transaction principale.

  16. Implémentation de transactions • T-ID : Identificateur de transaction • Inscription dans la BD seulement après le COMMIT • Journalisation: • Toute opération d'une transaction est notée avant et après l'exécution dans un fichier journal présumé à l'abris de pannes • Les opérations de commitement sont notées avant d'être exécutées sur la BD (write- ahead log protocol) • Points de reprise (checkpoints) • sauvegardes de l'état de la BD et notamment de TIDs de transactions en cours à intervalles réguliers

  17. Et si la casse arrive... • On ferme l'accès à la base • On reprend le dernier checkpoint • On retrouve sur le journal toutes les transactions commises après • commencées avant ou après le checkpoint • On re-exécute chronologiquement ces transactions • et seulement ces transactions • On rouvre la base aux usagers

  18. Concurrence • Les BDs étant partagées, les transactions pourraient être exécutées: • l'une après l'autre • simultanément • meilleures performances • possibilités d'inconsistances dans la base • Théorie de concurrence analyse les problèmes d'accès simultané

  19. R2 (A) R1 (A) A := A +200 A := A +100 W1 (A) A = 200 Exemple A = 100 La base

  20. R2 (A) R1 (A) A := A +200 A := A +100 W1 (A) A = 200 A = 300 W2 (A) Exemple A = 100 La base

  21. Quelques Verrous

  22. Gestion de la concurrence • Verrouillage exclusif • toute opération d'une transaction T sur une donnée D ne peut fait que si T obtient un verrou sur D • si D est déjà verrouillé par T' quand T le demande, alors T est mis en attente • Ce type de verrou est dit exclusif

  23. L (A) L (A) R1 (A) A := A +100 W1 (A) A = 200 U (A) Exemple La base A = 100

  24. L (A) L (A) R1 (A) A := A +100 W1 (A) A = 200 U (A) R2 (A) A := A +200 A = 400 Exemple La base A = 100

  25. Verrouillage partagé • les lectures ont les verrous partagés • T et T' peuvent lire D simultanément • les écritures doivent obtenir les verrous exclusifs • si D est déjà verrouillé par T', alors T est mis en attente • C'est la méthode la plus utilisé • Avantage: meilleures performances, mais...

  26. Lr (A) Lr (A) R1 (A) R2 (A) A := A +100 A := A +200 Lw (A) Lw (A) Exemple A = 100 La base

  27. Verrou mortel • Les transactions s'attendent mutuellement (deadlock) • Solution typique: • avorter une des transactions (la victime) • le choix est fait par le gestionnaire des verrous (lock manager)

  28. Lr (A) Lr (A) R1 (A) R2 (A) A := A +100 A := A +200 Lw (A) Lw (A) A W2 (A) A = 300 Exemple A = 100 La base

  29. Lr (A) A = 300 R1 (A) A := A +100 Lw (A) W1 (A) A = 400 La base

  30. Toujours plus loin dans les transactions • Commit à 2 phases: • Cette technique permet d’assurer qu'une transaction a fait avec succès la mise à jour de tous les fichiers appropriés dans un environnement de base de données réparties • flashback query : • conservation d'un historique de la base • Et aussi, permet de retourner à un état précédent de la base (malgré la validation).

  31. COMMIT ?

More Related