Les TransactionsLes Transactions
Ait Ahmed MadjidAit Ahmed Madjid
Cohen LiorCohen Lior
Jaballah SeddikJaballah Seddik
Leborgne FabienLeborgne Fabien
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
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 ******
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
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
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à
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
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
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
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
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
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.
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;/
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;/
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.
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
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
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é
ExempleExempleExempleExemple
A = 100
R1 (A) R2 (A)
A := A +100
W1 (A) A = 200
A := A +200
La base
ExempleExempleExempleExemple
A = 100
R1 (A) R2 (A)
A := A +100
W1 (A) A = 200
A := A +200
W2 (A)A = 300
La base
Quelques VerrousQuelques VerrousQuelques VerrousQuelques Verrous
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
ExempleExempleExempleExemple
A = 100
R1 (A)
A := A +100
W1 (A) A = 200
La base
L (A)L (A)
U (A)
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
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...
ExempleExempleExempleExemple
A = 100R1 (A)
R2 (A)A := A +100
A := A +200
La base
Lr (A)Lr (A)
Lw (A)Lw (A)
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)
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)
A = 300R1 (A)
A := A +100
A = 400
La base
Lr (A)
Lw (A)
W1 (A)
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).
COMMIT ?COMMIT ?COMMIT ?COMMIT ?