Sunteți pe pagina 1din 56

Introduction D eclencheurs Transactions

Bases de donn ees


Cours 6 : Concepts avanc es : D eclencheurs, Transactions, Contr ole de concurrence Odile PAPINI
ESIL Universit e de la m editerran ee Odile.Papini@esil.univ-mrs.fr http://pages-perso.esil.univmed.fr/papini/

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Plan du cours

Introduction

D eclencheurs

Transactions

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Bibliographie
Livres : G. Gardarin : Bases de donn ees objet et relationnel. Eyrolles ed. 1999. C. J. Date : Introduction aux bases de donn ees. (8i` eme edition). Vuibert ed. 2004. H. Garcia-Molina, J. D. Ullman, J. Widow : Database systems, the complete book. Prentice Hall ed. 2002. Supports de cours : Support de cours : J. Le Maitre : http ://lemaitre.univ-tln.fr/cours.htm Support de cours : C. Sabatier, Universit e de la M editerran ee. Support de cours : N. Durand, ESIL, Dpt INTERNET Support de cours : A. Cornu ejols : www.lri.fr/ antoine
Odile PAPINI Bases de donn ees

Introduction D eclencheurs Transactions

D eclencheurs
D enition Un d eclencheur est une r` egle, dite active, de la forme : ev` enement-condition-action Trigger : proc edure stock ee qui est d eclench ee automatiquement par des ev enements sp eci es par le programmeur et ne sex ecutant que lorsquune condition est satisfaite D eclencheur ou Trigger est activ e par une requ ete de mise ` a jour

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

D eclencheurs
il permet : La possibilit e d eviter les risques dincoh erence dus a ` la pr esence de redondance Lenregistrement automatique de certains ev enements La sp ecication de contraintes li ees ` a l evolution de donn ees (ex : un salaire ne peut quaugmenter) De d enir toutes r` egles complexes li ees ` a lenvironnement dex ecution (ex : restrictions sur des horaires, des utilisateurs)
Odile PAPINI Bases de donn ees

Introduction D eclencheurs Transactions

D eclencheurs
Principe dun d eclencheur S equence ev enement-Condition-Action : Trigger d eclench e par un ev enement, sp eci e par le programmeur Insertion, destruction, modication sur une table Le trigger teste une condition : si cette derni` ere nest pas v eri ee, alors lex ecution sarr ete Laction est r ealis ee (toutes op erations sur la base de donn ees)

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

D eclencheurs
Caract eristiques dun d eclencheur Concernant laspect action : SQL nest pas proc edural Les SGBD fournissent une extension du langage SQL instructions de branchement conditionnel, instructions de r ep etition, aectations, Langage imp eratif permettant de cr eer des v eritables proc edures (proc edures stock ees) :
PL/SQL pour ORACLE T-SQL pour SQL Server norme SQL2003 pour DB2 et MySQL5
Odile PAPINI Bases de donn ees

Introduction D eclencheurs Transactions

D eclencheurs
Caract eristiques dun d eclencheur Concernant laspect action : Manipulation simultan ee de lancienne et de la nouvelle valeur dun attribut (permet tests sur l evolution) Un trigger peut etre ex ecut e:
Une fois pour un seul ordre SQL Ou ` a chaque ligne concern ee par cet ordre

Laction peut etre r ealis ee avant ou apr` es l ev enement

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

D eclencheurs
Caract eristiques dun d eclencheur Il ne peut y avoir quun seul trigger par ev enement sur une table Les triggers permettent de rendre une base de donn ees dynamique
Une op eration peut en d eclencher dautres, qui elles-m emes peuvent entraner en cascade dautres triggers

Ce m ecanisme nest pas sans danger


` a cause de risque de boucle innie

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

D eclencheurs

Cr eation dun d eclencheur (1) Sp ecier l ev enement qui d eclenche laction en indiquant le type de la mise ` a jour (INSERT, UPDATE, DELETE), le nom de la table et eventuellement le nom des attributs mis ` a jour Indiquer si laction est r ealis ee avant ou apr` es eventuellement, donner un nom ` a lancien et au nouveau n-uplet (uniquement le nouveau en cas dinsertion et uniquement lancien en cas de suppression)

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

D eclencheurs

Cr eation dun d eclencheur (2) D ecrire la condition sous laquelle se d eclenche l ev enement sous la forme dune expression SQL bool eenne, c.-` a-d. une expression pouvant etre plac ee dans une clause WHERE D ecrire laction ` a r ealiser sous la forme dune proc edure Indiquer si laction est r ealis ee pour chaque n-uplet mis ` a jour ou une seule fois pour la requ ete

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

D eclencheurs

CREATE TRIGGER nom trigger BEFORE | AFTER INSERT | DELETE | UPDATE [OF col,...,col] [OR INSERT | DELETE | UPDATE [OF col, ,col] ] ON nom table [[REFERENCING [OLD [AS] old] [NEW [AS] new ]] FOR EACH ROW [WHEN (condition pl/sql)]] bloc pl/sql ;

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

D eclencheurs

Cr eation dun d eclencheur : exemple V erication quun prix ne peut baisser CREATE OR REPLACE TRIGGER prixNePeutDiminuer BEFORE UPDATE OF prixUnitaire ON Article FOR EACH ROW WHEN (OLD.prixUnitaire > NEW.prixUnitaire) BEGIN raise application error(-20100, le prix dun produit ne peut diminuer) ; END ;

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

D eclencheurs
Cr eation dun d eclencheur : exemple D eclencheur ins erant un enregistrement ` a lint erieur dune seconde table table2 lorsquune op eration dinsertion sest accomplie dans une premi` ere table table1. il v erie aussi si le nouveau n-uplet poss` ede un attribut attr1 sup erieur ou egal ` a 10 CREATE TRIGGER declencheur1 AFTER INSERT ON table1 FOR EACH ROW WHEN (NEW.attr1 >= 10) BEGIN INSERT INTOtable2 VALUES( :NEW.attr1, :NEW.attr2) ; END ;
Odile PAPINI Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : introduction

SGBD multi-utilisateurs souvent des centaines, voire des milliers dutilisateurs


ex : syst` emes de r eservation (compagnies a eriennes), op erations bancaires

contraintes de temps r eel Comment eviter les int eractions n egatives entre les utilisateurs et garantir la coh erence de la base de donn ees ?

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions
Transaction s equence dinstructions SQL souvent d elimit ee par des instructions de d ebut et de n de transaction Op erations el ementaires dacc` es ` a la base de donn ees : read x : lecture dune donn ee lit un el` ement x et le stocke dans une variable du programme

write x : ecriture dune donn ee ecrit la valeur de la variable de programme x et le stocke dans el` ement de donn ees x
Odile PAPINI Bases de donn ees

Introduction D eclencheurs Transactions

Transactions
Exemple de transaction : transfert dune somme S dun compte A vers un compte B T start read A A=A-S write A read B B=B+S write B commit

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions
transactions concurrentes Plusieurs transactions peuvent se d erouler en m eme temps Un SGBD doit assurer que toute transaction poss` ede les propri et es suivantes (ACID) propri et es ACID Atomicit e : une transaction est une unit e atomique de traitement Coh erence : une transaction pr eserve la coh erence de la BD Isolation : les ex ecutions des transactions ne doivent pas interf erer les unes avec les autres Durabilit e : les changements appliqu es ` a la BD par une transaction valid ee doivent persister (m eme suite ` a une d efaillance)
Odile PAPINI Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : probl` emes dus ` a la concurrence


Si aucun contr ole du d eroulement des transactions : probl` emes perte de mise ` a jour lecture impropre
lecture de donn ees incoh erentes lecture de donn ees non conrm ees

lecture non reproductible objets fant omes

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : probl` emes dus ` a la concurrence (1)


Perte de mise ` a jour T1 read A read A A = A + 10 write A A = A + 50 write A A = 20 A = 60 T2 BD A = 10

On devrait avoir A= 70 MAIS on a A = 60 : perte de la mise ` a jour de T1


Odile PAPINI Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : probl` emes dus ` a la concurrence (2)


Lecture impropre (donn ees incoh erentes)
T1 T2 BD Contrainte A + B = 200 A = 120 B = 80

read A A = A - 50 write A read A read B display A +B (150 est ach e) read B B = B + 50 write B

A = 70

B = 130

T1 est coh erente MAIS T2 devrait acher la valeur 200 : lordre des op erations est tel que T2 ache 150
Odile PAPINI Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : probl` emes dus ` a la concurrence (3)


Lecture impropre (donn ees donn ees non conrm ees) T1 T2 A=70 write A read A (60 est lu) rollback (la valeur initiale de A est restaur ee) A = 50 BD A = 50 A=70

T1 a lu une valeur de A incorrecte : tout doit se passer comme si T2 navait jamais chang eA
Odile PAPINI Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : probl` emes dus ` a la concurrence (4)


Lecture non reproductible T1 T2 read A (10 est lu) A = 20 write A read A (20 est lu) T2 qui ne modie pas A doit obtenir ` a chaque lecture la m eme valeur pour cette donn ee : Mais lordre des op erations est tel que T2 lit 10 puis 20 A=20 BD A = 10

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : probl` emes dus ` a la concurrence (5)


Objet fant ome T1 display card(E) 3 est ach e insert 4 into E display card(E) 4 est ach e T1 na pas vu lajout de 4 dans E par T2 , pour T1 4 est un objet fant ome E = { 1, 2, 3, 4 } T2 BD E = { 1, 2, 3 }

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence


R esolution des probl` emes de concurrence : s erialisation s erialisation Les acc es simultan es aux m emes objets de la BD doivent etre s erialis es pour que les utilisateurs travaillent les uns ind ependamment des autres

Un ensemble de transactions concurrentes est correctement synchronis e si leur ex ecution s equentielle g en` ere un etat de la BD identique ` a celui qui serait obtenu si elles etaient ex ecut ees ind ependamment (par un seul utilisateur)

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence


ex ecution en s erie : Lex ecution dun ensemble de transactions est dite en s erie si, pour tout couple de transactions, tous les ev enements de lune pr ec` edent tous les ev enements de lautre. ex ecutions equivalentes Deux ex ecutions dun m eme ensemble de transactions sont equivalentes ssi : elles sont constitu ees des m emes ev enements, elles produisent le m eme etat nal de la BD et les m emes r esultats pour les transactions :
les lectures produisent les m emes r esultats les ecritures sont r ealis ees dans le m eme ordre
Odile PAPINI Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence

D enition de de la s eriabilit e

Une ex ecution concurrente dun ensemble de transactions est dite s erialisable ssi il existe une ex ecution en s erie equivalente

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence


Conditions de la s erialibilit e: Deux op erations sont dites conictuelles si elles appartiennent ` deux transactions di a erentes et si elles ne sont pas permutables Deux op erations appartenant ` a deux transactions di erentes sont conictuelles si et seulement si elles portent sur la m eme eration donn ee et que lune des deux au moins est une op d ecriture Une ex ecution concurrente est s erialisable si elle peut etre transform ee en une ex ecution en s erie equivalente par une suite de permutations dop erations non conictuelles
Odile PAPINI Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence


Permutations dop erations : ees sans probl` eme : Les op erations suivantes peuvent etre permut lecture, lecture op erations sur des donn ees di erentes eme donn ee : Op erations non permutables si m lecture, ecriture ecriture, lecture ecriture, ecriture

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence


exemple T1 read A write A read B write A write B read B write B T2 T1 read A write A read B write B T2

read A

read A write A read B write B

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence


Test de s eriabilit e graphe de pr ec edence : Chaque noeud est une transaction Chaque arc indique une pr ec edence dop erations conictuelles condition de s eriabilit e: Si le graphe poss` ede un cycle, lex ecution nest pas s erialisable

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence


R esolution des probl` emes de concurrence : verrouillage des donn ees Synchronise les acc` es aux donn ees des bases D` es quune transaction acc` ede ` a des donn ees, elle utilise un verrou D egrade les performances de la base de donn ees
A utiliser avec parcimonie Le moins longtemps possible

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence

Le verrouillage est la technique la plus classique pour r esoudre les probl` emes dus ` a la concurrence : Avant de lire ou ecrire une donn ee une transaction peut demander un verrou sur cette donn ee pour interdire aux autres transactions dy acc eder Si ce verrou ne peut etre obtenu, parce quune autre transaction en poss` ede un, la transaction demandeuse est mise en attente

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence

An de limiter les temps dattente, on peut jouer sur : la granularit e du verrouillage : pour restreindre la taille de la donn ee verrouill ee le mode de verrouillage : pour restreindre les op erations interdites sur la donn ee verrouill ee

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence


Granularit e du verrouillage On peut verrouiller : une valeur dattribut, un n-uplet (donc toutes ses valeurs), une table (donc toutes ses lignes), la BD (donc toutes ses tables).

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence


Les modes de verrouillage varient dun SGBD ` a lautre : Deux modes sont toujours d enis : partag e (S) : demand e avant de lire une donn ee exclusif (X) : demand e avant de modier une donn ee r` egles qui r egissent ces deux modes Un verrou partag e ne peut etre obtenu sur une donn ee que si les verrous d ej` a plac es sur cette donn ee sont eux m eme partag es Un verrou exclusif ne peut etre obtenu sur une donn ee que si aucun verrou nest d ej` a plac e sur cette donn ee
Odile PAPINI Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence

Deux op erations atomiques sont utilis ees pour manipuler les verrous : lock m (A) : demande dun verrou en mode m sur la donn ee A avec m :
X pour exclusif S pour shared

unlock (A) : d everrouillage de la donn ee A

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence


Transaction est bien form ee : Une transaction est bien form ee si : elle obtient un verrou sur une donn ee avant de lire ou d ecrire cette donn ee elle lib` ere tous ses verrous avant de se terminer Transaction ` a deux phases Une transaction est ` a deux phases si elle est bien form ee et si apr` es avoir lib er e un verrou elle nen acquiert plus
Odile PAPINI Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence


Transaction ` a deux phases : une phase dacquisition des verrous une phase de lib eration des verrous

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence


Transaction ` a deux phases : Il est d emontr e que lex ecution dun ensemble de transactions ` deux phases est s a erialisable : cons equence il ne peut y avoir ni pertes de mise ` a jour, ni lectures impropres, ni lectures non reproductibles Les transactions sont s erialis ees dans lordre du d ebut de leur phase de lib eration

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : plus de perte de mise ` a jour


T1 lock X A read A lock X A A = A + 10 write A attente unlock A read A A = A + 50 write A unlock A attente A = 20 attente T2 BD A = 10

A = 70

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : plus de lecture non reproductible


T1 T2 BD Contrainte A + B = 200 A = 120 B = 80

lock X A read A A = A - 50 write A lock X B read B B = B + 50 write B unlock A unlock B lock S B read B display A +B (200 est ach e)
Odile PAPINI Bases de donn ees

A = 70 lock S A attente attente attente attente attente read A

B = 130

Introduction D eclencheurs Transactions

Transactions : plus de lecture impropre


T1 T2 lock X A A=70 write A lock S A attente rollback (la valeur initiale de A est restaur ee, A est d everouill e) BD A = 50

A=70 A = 50

read A (50 est lu)

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : plus de lecture non-reproductible

T1

T2 lock S A read A (10 est lu)

BD A = 10

lock X A attente attente A = 20 write A

read A (10 est lu) unlock A A=20

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : les n-uplets fat omes


T1 SELECT COUNT(*) FROM livre WHERE ann ee = 2003 ; (r` eponse n) T2

INSERT INTO livre VALUES(Les BD, 203) COMMIT SELECT COUNT(*) FROM livre WHERE ann ee = 2003 ; (r` eponse n+1) COMMIT
Odile PAPINI Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : plus de n-uplets fat omes


T1 lock S livre SELECT COUNT(*) FROM livre WHERE ann ee = 2003 ; (r` eponse n) SELECT COUNT(*) FROM livre WHERE ann ee = 2003 ; (r` eponse n) COMMIT T2

lock X livre attente attente attente attente attente INSERT INTO livre VALUES(Les BD, 203) COMMIT
Bases de donn ees

Odile PAPINI

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence


inconvenient de la technique de verrouillage : risque inter-blocage T1 lock X A lock S B attente attente T2 lock X B lock S A attente

situation dinter-blocage : cycle dans le graphe dattente des transactions

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence


r esolution de linter-blocage : Pr evention : Tous les verrous dont une transaction ` a besoin lui sont fournis au d ebut D etection : Si cycle dans le graphe dattente interblocage : on d efait une des transactions bloqu ees et on la relance plus tard
Plusieurs strat egies

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence


strat egie : estampillage Transactions estampill ees avec lheure de lancement (TimeStamp, TS) Estampilles des transactions ordre chronologique die-wound : Une transaction ne peut quattendre quune plus jeune wound-wait : Une transaction peut attendre seulement une plus vieille
Odile PAPINI Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence


Autres strat egies : Attente :
no waiting : une transaction est annul ee si elle ne peut pas avoir un lock cautious waiting : une transaction est annul ee si elle est bloqu ee et quune autre transaction est aussi bloqu ee

timeout : annulation dune transaction qui attend un lock depuis un temps x e par le syst` eme

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence


r ecup eration de bases de donn ees : reprise Pannes dun SGBD :
panne dordinateur panne de disque

Reprise ` a chaud : apr` es un abandon de transaction ou une panne dordinateur, peut etre r ealis ee automatiquement et rapidement, en sappuyant sur la tenue dun journal qui garde en m emoire tous les ev enements dune transaction Reprise ` a froid : apr` es une panne de disque est plus longue ` a mettre en oeuvre. Elle n ecessite de r ealiser des copies r eguli` eres de la BD et un archivage des mises ` a jour entre deux copies.
Odile PAPINI Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence


Atomicit e et durabilit e: Le respect de latomicit e peut impliquer de d efaire les eets dune transaction lorsque celle-ci a et e abandonn ee Le respect de la durabilit e implique que le SGBD doit etre capable de remettre la base de donn ees en etat apr` es une panne :
les mises ` a jour faites par une transaction non conrm ee avant la panne doivent etre d efaites

Cest le gestionnaire de reprise qui assure cette t ache

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence


Journalisation : (ou logging) Journal : chier s equentiel qui contient une suite denregistrements dont chacun d ecrit un ev enement concernant la vie des transactions et les modications de la BD Fichier s equentiel enregistr e sur une m emoire stable, c.-` a-d. une m emoire qui th eoriquement ne peut pas etre d etruite Si n ecessaire, le journal est sauvegard e r eguli` erement sur un disque miroir, bandes magn etiques,

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence

exemple de journalisation Ev` enement ( T start) (T D a n) (T commit) (check point) Signicatio La transaction T a commen c e La transaction T a mis ` a jour ladonn ee D savaleur est pass ee de a ` an La transaction T a et e conrm e point de reprise

Odile PAPINI

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence


extrait de journal
T1 start lock X A read A (A= 15) A = A-1 write A lock S B unlock A T2 Journal (T1 start)

(T1 A 15 14)

start lock X A read A read B A=A*2 write A commit B=B/A


Odile PAPINI

(T2 start)

(T2 A 14 28) (T2 commit)

Bases de donn ees

Introduction D eclencheurs Transactions

Transactions : contr ole de concurrence


Points de reprise (ou check point) Point de reprise : marque dans le journal indiquant un moment o` u:
Aucune transaction n etait en cours Toutes les donn ees ecrites par des transactions ant erieures au point de reprise avaient et e transf er ees sur disque

Pour obtenir un point de reprise, il faut donc :


Interdire le d ebut de nouvelles transactions Laisser se terminer les transactions en cours

Odile PAPINI

Bases de donn ees