Académique Documents
Professionnel Documents
Culture Documents
Licence d’informatique
LI345
Anne Doucet
Anne.Doucet@lip6.fr
http://www-bd.lip6.fr/ens/li345-2013/index.php/LesCours
1
Contenu
• Transactions en pratique
• Modèle relationnel-objet
• Langage de requêtes SQL3
• XML et DTD
• XPath
• XSLT (2 cours)
• Web et BD
• PHP (2 cours)
• Droits et privilèges, autorisations
2
Bibliographie
3
Bases de données et sites WEB
Cours1 : Transactions en pratique
Anne Doucet
4
Plan
• Rappels
– Sérialisabilité et propriétés ACID
– Lectures sales et degrés d’isolation en SQL
• Transactions en ORACLE
– Gestion de la cohérence des données
• READ ONLY / READ WRITE
• SET TRANSACTION
• Contrôle de cohérence multiversion
• Modes de verrouillage
5
Prérequis
• Notion de transaction :
– Suite d’opérations de mise à jour de la base de données, qui
transforme la base d’un état cohérent en un autre état
cohérent.
• Gestion des pannes
– Journalisation, algorithmes UNDO et REDO
• Contrôle de concurrence
– Problèmes d’exécution simultanée de transactions
– Algorithmes de verrouillage
6
Sérialisabilité
8
Cohérence
9
Isolation
10
Durabilité
13
Transactions dans Oracle
• Une transaction démarre lorsqu’on exécute une instruction SQL qui
modifie la base ou le catalogue (DML et DDL).
– Ex : UPDATE, INSERT, CREATE TABLE…
• Une transaction se termine dans les cas suivants :
– L’utilisateur valide la transaction (COMMIT)
– L’utilisateur annule la transaction (ROLLBACK sans SAVEPOINT)
– L’utilisateur se déconnecte (la transaction est validée)
– Le processus se termine anormalement (la transaction est défaite)
• Amélioration des performances dans Oracle :
– Niveaux d’isolation
– Contrôle de concurrence multiversion
• Verrouillage
14
Commandes transactionnelles
• COMMIT
– Termine la transaction courante et écrit les modifications dans la base.
– Efface les points de sauvegarde (SAVEPOINT) de la transaction et
relâche les verrous.
• ROLLBACK
– Défait les opérations déjà effectuées d’une transaction
• SAVEPOINT
– Identifie un point dans la transaction indiquant jusqu’où la transaction
doit être défaite en cas de rollback.
– Les points de sauvegarde sont indiqués par une étiquette (les différents
points de sauvegarde d’une même transaction doivent avoir des
étiquettes différentes).
15
SET TRANSACTION
• SET TRANSACTION
– Spécifie le comportement de la transaction :
• Lectures seules ou écritures (READ ONLY ou READ
WRITE)
• Établit son niveau d’isolation (ISOLATION LEVEL)
• Permet de nommer une transaction (NAME)
• Cette instruction est facultative. Si elle est utilisée,
elle doit être la première instruction de la transaction,
et n’affecte que la transaction courante.
16
READ ONLY et READ WRITE
18
Niveaux d’isolation
• Oracle propose deux niveaux d’isolation, pour spécifier comment
gérer les mises à jour dans les transactions
– SERIALIZABLE
– READ COMMITTED
• Définition
– Pour une transaction :
• SET TRANSATION ISOLATION LEVEL SERIALIZABLE
• SET TRANSATION ISOLATION LEVEL READ COMMITTED
– Pour toutes les transactions à venir (dans une session)
• ALTER SESSION SET ISOLATION LEVEL = SERIALIZABLE;
• ALTER SESSION SET ISOLATION LEVEL = READ
COMMITTED;
19
ISOLATION LEVEL SERIALIZABLE
• L’exécution est équivalente à l’exécution séquentielle
• Empêche de modifier une ressource mise à jour par une transaction
non encore validée.
• Pas de lecture sale, pas de lecture non reproductible, pas de lecture
fantôme
• Pénalisant pour les performances
• Utilisation :
– grandes BD avec nombreuses transactions courtes et mises à
jour de quelques n-uplets seulement.
– Peu de transactions concurrentes (modifiant les même données)
– Lorsque les transactions longues sont essentiellement en lecture
20
ISOLATION LEVEL READ COMMITTED
• Utilisation :
– Peu de transactions concurrentes
21
Contrôle de cohérence multiversion
Session 2 :
SELECT * FROM authors
Pour lire le n-uplet modifié par la session 1, la session 2 doit
attendre la fin de la transaction de la session 1.
22
Contrôle de cohérence multiversion
Principe : maintenir les données de l’état précédent (version) jusqu’à
la validation. Les requêtes lisent l’ancienne version, et ne sont pas
obligées d’attendre la fin de la transaction qui fait les mises à jour.
Données de Authors (après le commit de la session 1):
Au_id Phone …
123 01 23 45 67 89 …
456 99 88 77 66 55 …
… … …
Données temporaires (pendant le déroulement de la session 1) :
Au_id Phone …
123 98 76 54 32 10 …
456 99 88 77 66 55 …
… … … 23
Résultat
Résultat de la session 2 :
Au_id Phone …
123 98 76 54 32 10 …
456 99 88 77 66 55 …
… … …
24
Mise en œuvre dans Oracle
25
26
Verrouillage en Oracle
27
Verrous mortels
28
Verrous de tuple
Pour contrôler l’isolation, Oracle dispose de plusieurs types de
verrous (verrous de tuple et verrous de table)
Une transaction acquiert un verrou exclusif pour chaque tuple
modifié par INSERT, UPDATE, DELETE, SELECT ..FOR
UPDATE
Les verrous de tuple, en combinaison avec la cohérence
multiversion,
– Permettent de lire une donnée sans attendre, même si une
autre transaction écrit une donnée du même tuple.
– Evitent les blocages des écritures par les lectures des
mêmes données, sauf en cas de SELECT … FOR
UPDATE
29
Verrous de table
Une transaction acquiert un verrou de table pour chaque relation
modifiée par une instruction INSERT, UPDATE, DELETE
SELECT .. FOR UPDATE et LOCK TABLE.
Permet de réserver les accès du DML pour une transaction
donnée et empêche les opérations du DDL.
Plusieurs modes : Row share (RS), row exclusive (RX), share
(S), share row exclusive (SRX) et exclusive (X)
Le mode de verrouillage détermine les types de verrous que
d’autres transactions peuvent détenir sur la même table.
Ex: Si T1 possède un verrou RX pour un INSERT, d’autres
transactions peuvent poser des verrous RS et RX, mais pas S,
SRX, X.
30
ROW SHARE (RS)
• La transaction qui tient le verrou a fait des mises à jour sur les
tuples de la relation.
• Acquis après les instructions :
– INSERT INTO table…;
– UPDATE table …;
– DELETE FROM table …;
– LOCK TABLE table IN ROW EXCLUSIVE MODE;
• Opérations permises : select, insert, update, delete, lock rows
• Opérations interdites : verrouiller la table en modes share
(S), share exclusive (SX), et exclusive (X).
32
SHARE (S)
33
SHARE ROW EXCLUSIVE (SRX)
35
Conclusion
• Maintien de la cohérence :
– Compromis entre cohérence et performance
• Propositions d’Oracle :
– Contrôle de concurrence multiversion
– Niveaux d’isolation
– Mécanismes de verrouillage pour limiter les
verrous mortels et améliorer les performances.
36