Les Transactions

31
Les Transactions Ait Ahmed Madjid Ait Ahmed Madjid Cohen Lior Cohen Lior Jaballah Seddik Jaballah Seddik Leborgne Fabien Leborgne Fabien

description

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 - PowerPoint PPT Presentation

Transcript of Les Transactions

Page 1: Les Transactions

Les TransactionsLes Transactions

Ait Ahmed MadjidAit Ahmed Madjid

Cohen LiorCohen Lior

Jaballah SeddikJaballah Seddik

Leborgne FabienLeborgne Fabien

Page 2: Les Transactions

IntroductionIntroductionIntroductionIntroduction

Beaucoup d'opérations sur une BD Beaucoup d'opérations sur une BD doivent être atomiques:doivent être atomiques:

Transfert d'argent entre les comptes:Transfert d'argent entre les comptes:UPDATE Compte1UPDATE Compte1

Val = Val -100Val = Val -100

UPDATE Compte2UPDATE Compte2

Val = Val + 100Val = Val + 100

Si seulement une de ces requêtes est Si seulement une de ces requêtes est exécutée, la BD perd sa cohérenceexécutée, la BD perd sa cohérence

Page 3: Les Transactions

TransactionsTransactionsTransactionsTransactions

Opérations Opérations aatomiquestomiques inexprimables inexprimables avec une requête relationnelle.avec une requête relationnelle.– entièrement ou pas du toutentièrement ou pas du tout

Préservant la Préservant la cconsistance onsistance de la BDde la BD

Comme si l'usager était Comme si l'usager était iisolé solé sur la sur la BDBD

******Notion de transactions Notion de transactions ******

Page 4: Les Transactions

Transactions: Les primitivesTransactions: Les primitives

Notions: COMMIT, ROLLBACKNotions: COMMIT, ROLLBACK Sous Oracle les opérations sont placées dans Sous Oracle les opérations sont placées dans

un buffer en attendant d ’être finaliser.un buffer en attendant d ’être finaliser.– =>Verrouillage des tables concernées=>Verrouillage des tables concernées

COMMIT: Finaliser une transaction, aucune COMMIT: Finaliser une transaction, aucune annulation possibleannulation possible

ROLLBACK: Annuler une transaction, les ROLLBACK: Annuler une transaction, les opérations placées qui n ’ont pas été finalisées opérations placées qui n ’ont pas été finalisées par un COMMIT sont effacées par un COMMIT sont effacées

Page 5: Les Transactions

Transactions: Les primitivesTransactions: Les primitivesTransactions: Les primitivesTransactions: Les primitives

Seul l'utilisateur ayant effectué les Seul l'utilisateur ayant effectué les modifications les voitmodifications les voit

Exemple: COMMIT, ROLLBACKExemple: COMMIT, ROLLBACKDébut TRANSACTIONDébut TRANSACTION

INSERT INTO Medicament VALUES (2, 'lexomil');ROLLBACK;INSERT INTO medicament VALUES (3,  ’doliprane');COMMIT;

FinFin

Seul doliprane a été inséré définitivementSeul doliprane a été inséré définitivement

Page 6: Les Transactions

RemarqueRemarqueRemarqueRemarque

Il existe plusieurs niveaux de ROLLBACKIl existe plusieurs niveaux de ROLLBACK Appel automatique si instruction erronéeAppel automatique si instruction erronée

– Exemple: Insertion d ’un tuple dont la clé existe déjàExemple: Insertion d ’un tuple dont la clé existe déjà

Page 7: Les Transactions

Permet de diviser une transaction Permet de diviser une transaction en en morceauxmorceaux

SAVEPOINT Point1;SAVEPOINT Point1; ...... ROLLBACK TO SAVEPOINT Point1;ROLLBACK TO SAVEPOINT Point1;

Les points de sauvegardeLes points de sauvegardeLes points de sauvegardeLes points de sauvegarde

Page 8: Les Transactions

Il est possible de rendre la Il est possible de rendre la finalisation des opérations finalisation des opérations automatiqueautomatique

– UTILISATION: « SET AUTOCOMMIT ON; »

Certaines opérations provoquent Certaines opérations provoquent des COMMIT automatiquementdes COMMIT automatiquement– Liste des opérations

COMMIT AutomatiqueCOMMIT AutomatiqueCOMMIT AutomatiqueCOMMIT Automatique

Page 9: Les Transactions

ALTERALTER

AUDITAUDIT

NOAUDITNOAUDIT

COMMENTCOMMENT

CONNECTCONNECT

CREATECREATE

DISCONNECTDISCONNECT

DROPDROP

EXITEXIT

GRANTGRANT

REVOKEREVOKE

QUITQUIT

RENAMERENAME

Les opérations qui valident… toutes Les opérations qui valident… toutes seulesseules

Les opérations qui valident… toutes Les opérations qui valident… toutes seulesseules

Page 10: Les Transactions

Oracle affecte aux transactions un IDOracle affecte aux transactions un ID

Possibilité de nommer une transactionPossibilité de nommer une transaction– SET TRANSACTION ... NAME

Possibilité de commenter un COMMIT– COMMIT COMMENT ‘mon commentaire ici’

Reconnaissance de transactionsReconnaissance de transactionsReconnaissance de transactionsReconnaissance de transactions

Page 11: Les Transactions

Possibilité de spécifier qu’une Possibilité de spécifier qu’une transaction est en lecture seule.transaction est en lecture seule.

Gestion optimiséGestion optimisé– Pas de verrous à gérerPas de verrous à gérer

Utilisation: Utilisation: SET TRANSACTION READ SET TRANSACTION READ ONLY;ONLY;

Les transactions en lecture Les transactions en lecture seuleseule

Les transactions en lecture Les transactions en lecture seuleseule

Page 12: Les Transactions

Transactions autonomesTransactions autonomes

Définition:Définition:– Il s'agit d'une transaction au sein d'une Il s'agit d'une transaction au sein d'une

transaction « primaire » qui est autonome par transaction « primaire » qui est autonome par rapport à cette dernière.rapport à cette dernière.

Cas d'utilisation:Cas d'utilisation:– Il peut être utile dans certain cas que la base Il peut être utile dans certain cas que la base

soit modifié même si la transaction est annulée.soit modifié même si la transaction est annulée.

Page 13: Les Transactions

ExempleExemple

La transaction autonome.La transaction autonome.

CREATE OR REPLACE PROCEDURE TransAutonome ISPRAGMA 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;/

Page 14: Les Transactions

Exemple (suite)Exemple (suite)

La transaction principale.La transaction principale.

CREATE OR REPLACE PROCEDURE lanceTransaction ISBEGIN -- 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;/

Page 15: Les Transactions

Exemple (fin)Exemple (fin)

Résultat.Résultat.

La base contient ces information après l'annulation de la La base contient ces information après l'annulation de la transaction principale:transaction principale:

ID_M NOM_M PRIX_M ID_M NOM_M PRIX_M

---------- -------------------- ---------- ---------- -------------------- ----------

8 vitamine B 5.2 8 vitamine B 5.2

7 lexomil 15.2 7 lexomil 15.2

Les opérations réalisées dans la transaction autonome ont été Les opérations réalisées dans la transaction autonome ont été conservées malgré l'annulation de la transaction principale.conservées malgré l'annulation de la transaction principale.

Page 16: Les Transactions

Implémentation de Implémentation de transactionstransactions

Implémentation de Implémentation de transactionstransactions

T-ID : Identificateur de transactionT-ID : Identificateur de transaction Inscription dans la BD seulement après le COMMITInscription dans la BD seulement après le COMMIT Journalisation:Journalisation:

– Toute opération d'une transaction est notée avant Toute opération d'une transaction est notée avant et après l'exécution dans un fichier et après l'exécution dans un fichier journaljournal présumé présumé à l'abris de pannesà l'abris de pannes

– Les opérations de commitement sont notées avant Les opérations de commitement sont notées avant d'être exécutées sur la BD d'être exécutées sur la BD (write- ahead log (write- ahead log protocol)protocol)

Points de reprise (checkpoints)Points de reprise (checkpoints)– sauvegardes de l'état de la BD et notamment de sauvegardes de l'état de la BD et notamment de

TIDs de transactions en cours à intervalles réguliersTIDs de transactions en cours à intervalles réguliers

Page 17: Les Transactions

Et si la casse arrive...Et si la casse arrive...Et si la casse arrive...Et si la casse arrive...

On ferme l'accès à la baseOn ferme l'accès à la base On reprend le dernier checkpointOn reprend le dernier checkpoint On retrouve sur le journal toutes les On retrouve sur le journal toutes les

transactions transactions commises commises aprèsaprès– commencées avant ou après le commencées avant ou après le

checkpointcheckpoint On re-exécute chronologiquement On re-exécute chronologiquement

ces transactionsces transactions– et seulement ces transactionset seulement ces transactions

On rouvre la base aux usagersOn rouvre la base aux usagers

Page 18: Les Transactions

ConcurrenceConcurrenceConcurrenceConcurrence

Les BDs étant partagées, les Les BDs étant partagées, les transactions pourraient être transactions pourraient être exécutées:exécutées:– l'une après l'autrel'une après l'autre– simultanémentsimultanément

meilleures performancesmeilleures performances possibilités d'inconsistances dans la basepossibilités d'inconsistances dans la base

Théorie de concurrence analyse les Théorie de concurrence analyse les problèmes d'accès simultanéproblèmes d'accès simultané

Page 19: Les Transactions

ExempleExempleExempleExemple

A = 100

R1 (A) R2 (A)

A := A +100

W1 (A) A = 200

A := A +200

La base

Page 20: Les Transactions

ExempleExempleExempleExemple

A = 100

R1 (A) R2 (A)

A := A +100

W1 (A) A = 200

A := A +200

W2 (A)A = 300

La base

Page 21: Les Transactions

Quelques VerrousQuelques VerrousQuelques VerrousQuelques Verrous

Page 22: Les Transactions

Gestion de la Gestion de la concurrenceconcurrence

Gestion de la Gestion de la concurrenceconcurrence

Verrouillage exclusifVerrouillage exclusif– toute opération d'une transaction T sur toute opération d'une transaction T sur

une donnée D ne peut fait que si T une donnée D ne peut fait que si T obtient un obtient un verrouverrou sur D sur D

– si D est déjà verrouillé par T' quand T si D est déjà verrouillé par T' quand T le demande, alors T est mis en attentele demande, alors T est mis en attente

Ce type de verrou est dit Ce type de verrou est dit exclusifexclusif

Page 23: Les Transactions

ExempleExempleExempleExemple

A = 100

R1 (A)

A := A +100

W1 (A) A = 200

La base

L (A)L (A)

U (A)

Page 24: Les Transactions

ExempleExempleExempleExemple

A = 100

R1 (A)

R2 (A)

A := A +100

W1 (A) A = 200

A := A +200

La base

L (A)L (A)

U (A)

A = 400

Page 25: Les Transactions

Verrouillage partagéVerrouillage partagéVerrouillage partagéVerrouillage partagé

les lectures ont les les lectures ont les verrous partagésverrous partagés– T et T' peuvent T et T' peuvent lirelire D simultanément D simultanément

les écritures doivent obtenir les les écritures doivent obtenir les verrous exclusifsverrous exclusifs– si D est déjà verrouillé par T', alors T est mis si D est déjà verrouillé par T', alors T est mis

en attenteen attente

C'est la méthode la plus utiliséC'est la méthode la plus utilisé Avantage: Avantage: meilleures performances, meilleures performances,

mais...mais...

Page 26: Les Transactions

ExempleExempleExempleExemple

A = 100R1 (A)

R2 (A)A := A +100

A := A +200

La base

Lr (A)Lr (A)

Lw (A)Lw (A)

Page 27: Les Transactions

Verrou mortelVerrou mortelVerrou mortelVerrou mortel

Les transactions s'attendent Les transactions s'attendent mutuellement (deadlock)mutuellement (deadlock)

Solution typique:Solution typique:– avorter une des transactions (la avorter une des transactions (la victimevictime))– le choix est fait par le le choix est fait par le gestionnaire des gestionnaire des

verrousverrous (lock manager) (lock manager)

Page 28: Les Transactions

ExempleExempleExempleExemple

A = 100R1 (A)

R2 (A)A := A +100

A := A +200

A = 300

La base

Lr (A)Lr (A)

Lw (A)Lw (A)

A

W2 (A)

Page 29: Les Transactions

A = 300R1 (A)

A := A +100

A = 400

La base

Lr (A)

Lw (A)

W1 (A)

Page 30: Les Transactions

Toujours plus loin dans les Toujours plus loin dans les transactionstransactions

Toujours plus loin dans les Toujours plus loin dans les transactionstransactions

Commit à 2 phases:Commit à 2 phases:– Cette technique permet d’assurer qu'une Cette technique permet d’assurer qu'une

transaction a fait avec succès la mise à jour transaction a fait avec succès la mise à jour de tous les fichiers appropriés dans un de tous les fichiers appropriés dans un environnement de base de données répartiesenvironnement de base de données réparties

flashback queryflashback query :– conservation d'un historique de la baseconservation d'un historique de la base– Et aussi, permet de retourner à un état Et aussi, permet de retourner à un état

précédent de la base (malgré la validation).précédent de la base (malgré la validation).

Page 31: Les Transactions

COMMIT ?COMMIT ?COMMIT ?COMMIT ?