Professional Documents
Culture Documents
avancées
Jean-Yves Antoine
LI - Université François Rabelais de Tours
Jean-Yves.Antoine AT univ-tours.fr
table2
DELETE FROM table2 WHERE…
table1
INSERT INTO table2 VALUES…
• Transaction
- Unité logique de traitement correspondant à un ensemble d’actions sur la BD
- Trois actions atomiques : validation, annulation et ré-exécution d’une transaction
- Unité de base pour la gestion des pannes et celle des accès concurrents
• ROLLBACK ROLLBACK ;
– Termine une transaction en annulant toutes les actions effectuées.
• Sous-transaction : SAVEPOINT
– positionnement d’un point intermédiaire dans la transaction
SAVEPOINT <point_repere> ;
– annulation des actions depuis ce point de repère (et non depuis le début)
ROLLBACK TO <point_repere> ;
COMMIT ;
SAVEPOINT a ;
? ?
DELETE FROM personne WHERE .... ;
ROLLBACK TO a ; ROLLBACK ;
Mode d’accès
READ ONLY | READ WRITE
log log
avant 2 4 après
journal
3 Cache
donnée donnée
lue 1 5 modifiée
BD persistante
Fichier Log1
Fichier LogN
M MIT
T2 CO
M MIT
T3 CO
T4 ?
T5 ?
prêt prêt
COMMIT OK Commit OK
panne
prêt
timeout reprise
ordre ROLLBACK distant ordre ROLLBACK distant
ROLLBACK OK ROLLBACK OK
prêt prêt
panne
COMMIT OK
timeout
reprise
COMMIT OK
Perte d’opération
UPDATE O1
O1
UPDATE O1
Lecture O1
Lecture O1
UPDATE
tampon
UPDATE
tampon Écriture O1
T1
Ecriture O1 T2
Perte T2
CHECK 01 = 02
UPDATE O2
01 02 UPDATE O1 (idem)
SELECT O1
SELECT O2 Lecture O2
Écriture O2
T1 Lecture O1
T2
Lecture O2 Lecture O1
Écriture O1
01 ≠ 02 !!
CHECK 01 = 02 UPDATE O2
UPDATE O1 (idem)
UPDATE O1
UPDATE O2 (idem) 01 02
Lecture O1 Lecture O2
Ecriture O1
Écriture O2
T1 Lecture O2 Lecture O1
T2
01 ≠ 02 ?? Ecriture O2
Écriture O1
T1 T2 T3 T1 T2 T3
Estampillage
. – Numéro d’ordre attribué aux transactions
– Traces sur les éléments de la BD lors des opérations de lecture / écriture :
• LL(E) numéro de la dernière transaction à avoir lu l’élément E
• LE(E) numéro de la dernière transaction à avoir écrit / modifié E
– Algorithme d’ordonnancement: Ti veut opérer sur une donnée E
• si i ≥ LL(E) (resp. LE(E) ) alors on peut exécuter i (transaction bien postérieure)
• sinon, on annule et reprend la transaction d’estampille LL(E) ( resp. LE(E) ).
– Approche optimiste : on suppose que tout se passe bien a priori. Si
ordonnancement non sérialisable, il faut alors différer ou défaire les transactions
Stratégies de verrouillage
– Verrous uniques stricts : verrou sur une donnée dès qu’on l’utilise
– Verrous distincts non nécessairement exclusifs : verrous différents suivant l’action
• lecture (verrou partagé) / écriture (exclusif)
• lecture, mise à jour protégés ou non, exclusive ou non , etc…
Niveaux d’isolation des transactions C= 1 0
Matrice de compatibilité des opérations 0 0
lecture / écriture
Bases de Données avancées — IUP Blois, U. Rabelais Tours — © J.Y. Antoine — 28
Accès concurrents : verrouillage
Algorithme de verrouillage (cas général : verrous distincts)
– Avant chaque opération, la transaction vérifie si elle peut poser le verrou (exclusif ou
non) qui correspond à cette dernière. Si non, attente.
– En pratique :
⇒ Vecteur O(i,e) des opérations de la transaction Ti en cours sur l’élément e
⇒ Demande LOCK : vecteur booléen Mj(e) des modes de verrouillage demandés
⇒Demande UNLOCK: remise à zéro du mode correspondant dans O(i,e)
⇒ Verrouillage autorisé si : M (e) ⊂ ( C * Σ O(i,e) ) j Boole
i≠j
01 02
T1 T2 T3 T4
T1 01 ⊂ 02 UPDATE O2
SELECT O1
SELECT O2 01 02
UPDATE O2
01 02
ROLLBACK
SELECT O2
Écriture O2
Lecture O2
T1 ROLLBACK
O2?? T2
Lecture O2 UPDATE
tampon
Écriture O2
SELECT O2
T1
Lecture O2 T2
COMMIT
O2??
01 02
UPDATE O2
SELECT O1
UPDATE O1
SELECT O2
Écriture O2
Lecture O1
T1 Écriture O1
Lecture O2 T2
O1 ?? COMMIT
Age =4 Age = 5
A B
Bases de Données avancées — IUP Blois, U. Rabelais Tours — © J.Y. Antoine — 38
Accès concurrents : Oracle
Niveaux d’isolation
Niveau d’isolation Lecture Lecture non Fantôme
salissante renouvelable
Lecture non validée
Lecture validée
Lecture renouvelable
Sérialisable
Modification
Généralement pour changer l’amplitude de variation ou le pas d’incrément
ALTER SEQUENCE [<schema>.]<nom_seq> + un des éléments de création
Suppression
DROP SEQUENCE <nom_sequence> ;
• Exemple
CREATE SEQUENCE seq_exple NOCYCLE ;
SELECT seq_exple.NEXTVAL FROM seq_exple ; /* 1ère utilisation */
...
SELECT seq_exple.CURVAL FROM seq_exple ; /* lecture 1ère valeur */
...
SELECT seq_exple.CURVAL FROM seq_exple ;
SQL
Contrôle discrétionnaire uniquement
– Privilège objet : droit d ’accès à un objet précis dans un autre schéma que le sien.
Par défaut, un utilisateur qui crée un nouvel objet à tous les droits sur lui, les autres
aucun (sauf DBA)
Privilège système :
CREATE, ALTER et DROP. Par défaut, pour les objets « courants » (table,
vue, séquence, synonyme), droit généralement limité à CREATE.
CREATE SESSION : droit de connexion !
GRANT OPTION
droit au bénéficiaire d’accorder ce privilège à d’autres utilisateurs
A REVOKE ?
GRANT
B
GRANT
C
Table1
Suppression
UTILISATEURS PREDEFINIS
– SYS propriétaire du dictionnaire de données
– SYSTEM administrateur ORACLE par défaut
Bases de Données avancées — IUP Blois, U. Rabelais Tours — © J.Y. Antoine — 55
SGBD Oracle : rôles
Regroupement d’utilisateurs qui partageront les mêmes privilèges
GRANT priv_system
TO { utilisateur | role | PUBLIC } [WITH ADMIN OPTION]
Groupes d’utilisateurs
GRANT role
TO { utilisateur | PUBLIC } [WITH ADMIN OPTION]
Travaux cités
– GRAY J.N. et al. (1981) The recovery manager of the system R Database Manager.
ACM Computing Surveys, 13(2).
– HÄRDER T., REUTER A. (1983) Principles of transaction-oriented database recovery.
ACM Comput. Surv. 15(4).
– MOHON C. et al. (1992) A transaction recovery method supporting fine-granularity
locking and partial rollbacks using write-ahead logging. ACM TODS 17(1).