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

Transaction : il sagit dun ensemble dopérations qui forment un tout indivisible. Elles doivent toutes sexécuter ou aucune ne doit sexécuter. Exemple :

Présentations similaires


Présentation au sujet: "Transaction : il sagit dun ensemble dopérations qui forment un tout indivisible. Elles doivent toutes sexécuter ou aucune ne doit sexécuter. Exemple :"— Transcription de la présentation:

1

2 Transaction : il sagit dun ensemble dopérations qui forment un tout indivisible. Elles doivent toutes sexécuter ou aucune ne doit sexécuter. Exemple : un client dune banque transfert 50,000.00$ de son compte dépargne à son compte de chèque. 2 opérations 2 1. Retirer 50,000.00$ du compte dépargnes. 2. Déposer 50,000.00$ dans le compte chèques. Une seule transaction

3 3 Au cours dune transaction, lutilisateur verrouille la/les lignes des tables qui sont modifiées. Si un autre utilisateur veut modifier la ressource pendant quelle est verrouillée, le processus de lutilisateur attend que la ressource se libère. Si un utilisateur veut voir la valeur dune ressource et que celle-ci est verrouillée, lutilisateur verra lancienne version de la ressource (la version originale de la donnée)

4 Pour confirmer les modifications apportées à la base de données lutilisateur doit les valider. Par défaut, une modification de la base de donnée doit être validé par la commande COMMIT ou dans certain cas par la sortie explicite du logiciel daccès (EXIT dans SQL*PLUS). Après une validation, les modifications deviennent accessibles à tous les utilisateurs et les ressources sont libérées. 4

5 Les modifications deviennent permanentes lors de lexécution dun COMMIT. Une transaction, cest lensemble des opérations faites entre 2 COMMIT. Syntaxe : COMMIT; Exemple : … INSERT…; COMMIT; DELETE… UPDATE…; COMMIT; 5 Transaction

6 Certaines instructions entraînent l'exécution automatique d'un COMMIT ALTER... AUDIT... COMMENT... CONNECT... CREATE... DISCONNECT... DROP... EXIT GRANT... NOAUDIT... QUIT REVOKE... RENAME... 6

7 ROLLBACK Tous les changements effectués par la transaction active sont annulés Exemple : COMMIT; DELETE * FROM employe; INSERT INTO employe(NoEmp, NomE) VALUES (1010, Toto); ROLLBACK; 7

8 SAVEPOINT permet de marquer un endroit dans une transaction où l'on pourrait vouloir revenir. Syntaxe: SAVEPOINT marque pour annuler les changements faits depuis un endroit marqué dans une transaction ROLLBACK TO marque 8

9 Exemple : DELETE…; COMMIT; UPDATE…; SAVEPOINT Bloc1; DELETE…; ROLLBACK TO Bloc1; COMMIT; 9 Enregistre le UPDATE…;

10 On dit quil y a accès concurrent lorsque plusieurs utilisateurs accèdent aux même données. La base de données doit être protégée des interférences qui peuvent résulter des accès simultanés de deux usagers. Exemple : si deux usagers font des retrait dun même compte en même temps, le solde final devra tenir compte des deux transactions. 10

11 Le SGBD utilise un système de verrouillage pour protéger les données tant que la transaction dun usager nest pas finie. La transaction qui a posée le verrou peut utiliser les données tandis que les autre transactions sont en attente. Il existe des verrous au niveau des lignes dune table et au niveau dune table en entier. Le verrouillage peut être implicite (le SGBD le fait automatiquement) ou explicite (commande LOCK). 11

12 Les instructions INSERT, UPDATE ou DELETE pose automatiquement un verrou exclusif de ligne sur la table. Il est alors possible de consulter les anciennes valeurs par un SELECT mais aucunes modification de ces lignes nest permise. Linstruction SELECT ne pose pas de verrou. Pour réserver, dans le cas dune mise à jour ultérieur, on peut utiliser le verrou SELECT … FOR UPDATE; Les commandes COMMIT ou ROLLBACK annule les verrous dune transaction. 12

13 Utilisateur 1Utilisateur 2Commentaire SELECT * FROM employe WHERE id = 1010; Les deux voient la même chose. DELETE employe WHERE id = 1010; SELECT * FROM employe WHERE id = 1010; Lusager 1 ne voit plus lemployé Lusager 2 voit lemployé DELETE employe WHERE Id = 1010; Lusager 2 est mis en attente. 13

14 14 Utilisateur 1Utilisateur 2Commentaire COMMIT;Un message est envoyé à lusager 2 que la ligne nexiste pas. Les modifications sont enregistrés dans la base de données. Le verrou est défait. SELECT * FROM employe WHERE id = 1010; Les deux ne voient plus lusager 1010.

15 Verrouille les lignes sélectionnées. NOWAIT Retourne le contrôle si une ligne est verrouillée par un autre utilisateur. Exemple SELECT * FROM employe WHERE id= 20 FOR UPDATE NOWAIT; 15


Télécharger ppt "Transaction : il sagit dun ensemble dopérations qui forment un tout indivisible. Elles doivent toutes sexécuter ou aucune ne doit sexécuter. Exemple :"

Présentations similaires


Annonces Google