Vous êtes sur la page 1sur 73

Transactions et concurrence

Le concept de transaction

Les tats dune transaction e

Excutions concurrentes e

Srialisabilit e e

Dnition des transactions dans SQL e

Test de srialisabilit e e

Le concept de transaction

Une transaction est une unit de programme qui acc`de e e aux donnes de la base en lecture et/ou criture e e Une transaction acc`de ` un tat cohrent de la base e a e e Durant lexcution dune transaction, ltat de la base e e peut ne pas tre cohrent e e Quand une transaction est valide (commit), ltat de e e la base doit tre cohrent e e Deux types de probl`mes e

probl`mes syst`mes (rcuprabilit) e e e e e

excutions concurrentes de plusieurs transactions e (srialisabilit) e e

Proprits e e

Pour prserver lintgrit des donnes, le syst`me doit e e e e e garantir certaines proprits : e e Atomicit : Soit toutes les oprations de la transace e tion sont valides, ou bien aucune opration ne lest e e Cohrence : Lexcution dune transaction e e prserve la cohrence de la base e e Isolation : Mme si plusieurs transactions peuvent e tre excutes en concurrence, aucune nest cense e e e e prendre en compte les autres transactions ; i.e pour chaque paire Ti, Tj , pour Ti tout se passe comme si Tj sest termine avant le dbut de Ti ou bien e e quelle commence apr`s la n de Ti (les rsultats ine e termdiaires de Tj lui sont invisibles) e Durabilit : Si une transaction est valide, alors tous e e les changements quelle a faits sont persistants (mme e sil y a un crash) Ce sont les proprits ACID e e

Exemple

Une transaction qui transfert 1000 Eur du compte A vers le compte B 1. Lire(A) 2. A := A 1000 3. Ecrire(A) 4. Lire(B) 5. B := B + 1000 6. Ecrire(B)

La base est cohrente si la somme A+B ne change e pas suite ` lexcution de la transaction (cohrence) a e e

Si la transaction choue apr`s ltape 3, alors e e e le syst`me doit sassurer que les modications de e A ne soient pas persistantes (atomicit) e

Exemple (suite)

Une fois lutilisateur est inform que la transaction e est valide, il na plus ` sinquiter du sort de son e a e transfert (durabilit) e

Si entre les tapes 3 et 6, une autre transaction e est autorise ` accder ` la base, alors elle verra e a e a un tat incohrent (A + B est infrieur ` ce quelle e e e a doit tre). Lisolation nest pas assure. La soe e lution triviale consiste ` excuter les transactions a e en squence e

Etats dune transaction

Active : la transaction reste dans cet tat durant e son excution e

Partiellement valide : juste apr`s lexcution e e e de la derni`re opration e e

Echec : apr`s avoir dcouvert quune excution e e e normale ne peut pas avoir lieu

Avorte : Apr`s que toutes les modications faites e e par la transaction soient annules (Roll back). e Deux options Rexcuter la transaction e e Tuer la transaction

Valide : apr`s lexcution avec succ`s de la e e e e derni`re opration e e

Etats dune transaction

Partiellement valide

valide

Active

Echec

Avorte

Implmentation de latomicit e e

Approche na ve

Cest le mcanisme de reprise sur panne e

La notion de copie (shadow database) On suppose quune seule transaction peut tre e excute ` la fois e e a Un pointeur pointeur bd pointe vers la version cohrente courante de la base. e Toutes les mises ` jour sont excutes sur une a e e copie. pointeur bd ne pointera sur la copie que si la transaction est valide. e Si la transaction choue, alors la copie est supe prime. e

Implmentation de latomicit e e

pointeur_bd

pointeur_bd

Ancienne copie

Ancienne copie supprimer

Nouvelle version de la base

a) avant la mise jour

b) aprs la mj

inecace si la base est volumineuse.

Excutions concurrentes e

Plusieurs transactions peuvent tre excutes en e e e concurrence une meilleur utilisation du processeur (une transaction peut utiliser le processeur pendant quune autre acc`de au disque) e rduction du temps de rponse aux transace e tions (une transaction courte na pas ` attena dre la n dune transaction longue)

Contrle de la concurrence : mcanisme pero e mettant linteraction entre transactions tout en assurant lintgrit de la base. e e

Ordonnancement

En anglais : Schedule.

Une squence chronologique spciant lordre e e dexcution doprations de plusieurs transactions e e

Exemple :

T1 T2 Lire(A) A := A 1000 Ecrire(A) Lire(B) B := B + 1000 Ecrire(B) Lire(A) T emp := A 0, 1 A := A T emp Ecrire(A) Lire(B) B := B + T emp Ecrire(B) Cest un ordonnancement en srie de T1 et T2. e On lappellera O1

Ordonnancement (suite)

T1 Lire(A) A := A 1000 Ecrire(A)

T2

Lire(A) T emp := A 0, 1 A := A T emp Ecrire(A) Lire(B) B := B + 1000 Ecrire(B) Lire(B) B := B + T emp Ecrire(B) L ordonnancement O3 reprsente une excution ene e trelace de T1 et T2. Il est quivalent ` T1, T2 . e e a

Ordonnancement (suite)

Lordonnancement suivant (O4) ne prserve pas la e valeur de A + B. Pourtant T1 et T2 prises ` part a prservent cette valeur. Cest un ordonnancement e quon ne doit pas accepter.

T1 Lire(A) A := A 1000

T2

Lire(A) T emp := A 0, 1 A := A T emp Ecrire(A) Lire(B) Ecrire(A) Lire(B) B := B + 1000 Ecrire(B) B := B + T emp Ecrire(B)

Srialisabilit e e

Dans la suite, on ne va considrer que les oprations e e de lecture et dcriture. e

Hypoth`se : Chaque transaction prise ` part prserve e a e la cohrence de la base. e

Ainsi, lexcution en srie prserve la cohrence. e e e e

Un ordonnancement entrelac est srialisable sil e e est quivalent ` un ordonnancement en srie. e a e

Remarque sur la srialisabilit e e

Soit O un ordonnancement compos des transactions e {T1, . . . , Tn}. O est srialisable si son excution donne le mme e e e rsultat que lexcution de T1, . . . , Tn dans un ordre e e quelconque. Il faut donc tester toutes les permutations possibles qui sont en nombre de n! Ceci est la dnition gnrale mais qui est dicile ` e e e a implmenter. Cest pour a quon a propos dautres e c e dnitions qui peuvent tre testes sans avoir ` excuter e e e a e tous les ordonnancements en srie possibles (i.e les e n!).

c-srialisabilit e e

Les instructions ti et tj des transactions Ti et Tj sont en conit sil existe un objet Q accd par ti e e et tj et lune delles crit Q. Si ti = Lire(Q) et e tj = Lire(Q) alors il ny a pas de conit.

Si un ordonnancement O peut tre transform e e en O par une srie de remplacements (swaps) e dinstructions non conictuelles, alors O et O sont c-quivalents. e

O est c-srialisable sil est c-quivalent ` un ore e a donnancement en srie. e

Lordonnancement ci-dessous nest pas c-srialisable e

T3 Lire(Q) Ecrire(Q)

T4 Ecrire(Q)

c-srialisabilit e e

Lordonnancement O3 ci-dessous peut tre transform e e en O1. Il est donc c-srialisable. e

T2 T1 Lire(A) Ecrire(A) Lire(A) Ecrire(A) lire(B) Ecrire(B) lire(B) Ecrire(B)

srialisabilit e e

Lordonnancement ci-dessous est quivalent ` T1, T e a pourtant il nest pas c-srialisable e T1 Lire(A) A := A 1000 Ecrire(A) T

Lire(B) B := B 10 Ecrire(B) Lire(B) B := B + 1000 Ecrire(B) Lire(A) A := A + 10 Ecrire(A) Pour dterminer ce type dquivalence, il faut anale e yser des oprations autres que Lire et Ecrire. e

Reprise sur panne. Rcuprabilit e e e

O est rcuprable si suite ` lannulation dune e e a transaction, on peut toujours revenir ` un tat a e cohrent sans dfaire les transactions valids. e e e

Ordonnancement rcuprable : Si Ti lit un objet e e prcdemment crit par Tj alors la validation de e e e Tj a lieu avant la validation de Ti

Lordonnancement suivant nest pas rcuprable e e si T9 valide tout de suite apr`s la lecture e T8 T9 Lire(A) Ecrire(A) Lire(A) Ecrire(B) Si T8 doit tre avorte, alors T9 aura lu une valeur e e qui peut tre incohrente e e

Le SGBD doit sassurer que les ordonnancements soient rcuprables. e e

Rcuprabilit (suite) e e e

Lechec dune transaction peut conduire ` a lavortement de plusieurs transactions

T10 T11 T12 Lire(A) Lire(B) Ecrire(A) Lire(A) Ecrire(A) Lire(A) f in f in f in Si T10 choue, alors T11 et T12 doivent tre avortes. e e e

Rcuprabilit (suite) e e e

Ordonnancement sans cascade : Si pour chaque paire Ti, Tj t.q Tj lit une donne prcdemment e e e crite par Ti, alors la validation de Ti a lieu avant e celle de Tj .

Un ordonnancement sans cascade de roll back est rcuprable. e e

Il est souhaitable de restreindre les ordonnancements ` ceux qui sont sans cascade a

Implmentation de lisolation e

Les ordonnancements doivent tre c-srialisables, e e rcuprables pour garder la cohrence de la base e e e et de prfrence sans cascade. ee

Si lon nautorise que les ordonnancements en srie, e alors toutes les proprits sont garanties. e e

Faire la balance entre le taux de concurrence et le traitement en plus qui sy gree.

Tester la c-srialisabilit e e

Considrer un ordonnancement O des transactions e T1, . . . Tn. Le graphe de prcdence de O est un graphe e e (N, A) o` u

N est lensemble des transactions

Il y a un arc (Ti, Tj ) sil y a un conit entre Ti et Tj sur un objet Q et Ti acc`de ` Q avant Tj e a

O est c-srialisable ssi son graphe de prcdence est e e e acyclique.

Exemple de test
T1 Lire(Y ) Lire(Z) Lire(V ) Lire(W ) Ecrire(W ) Lire(Y ) Ecrire(Y ) Ecrire(Z) Lire(U ) Lire(Y ) Ecrire(Y ) Lire(Z) Ecrire(Z) Lire(U ) Ecrire(U ) T2 Lire(X) T3 T4 T5

T1

T2

T5 T3 T4

Exemple de test

T1 Lire(A)

T2 Lire(A) Ecrire(A)

Ecrire(A)

T1

T2

conclusion

Tester si un ordonnancement est srialisable apr`s e e son excution (ou bien sur son graphe de prcdence) e e e est inecace.

But : Dvelopper des stratgies de contrle de e e o concurrence qui puissent garantir la c-srialisabilit. e e Ces protocoles nauront pas besoin de faire le test sur le graphe de prcdence (utilisation de teche e niques de verrouillage, cf prochain cours)

Pourquoi ce cours ? Pouvoir dcider si un proe tocole est correct par rapport ` une notion de a srialisabilit. e e

Contrle de concurrence o

Protocoles bass sur les verrous e

Protocoles bass sur les estampilles e

Protocoles bass sur la validation e

Direntes granularits e e

Gestion des deadlock (verrous mortels)

Notion de verrouillage

Les transactions posent des verrous sur les donnes e auxquelles elles veulent accder. e Les donnes peuvent tre verrouilles de deux mani`res e e e e

Verrou exclusif : Dans ce cas, la donne peut e tre lue et crite. Le verrou X est attribu lors de e e e lexcution de lopration Lock X(donne) e e e

Verrou partag : Dans ce cas, la donne ne peut e e tre que lue. Le verrou P est attribu suite ` e e a lexcution de Lock P (donne) e e

Les demandes de verrous sont adresses au gestione naire de la concurrence. Une transaction ne peut avancer tant que le verrou quelle demande ne lui est pas attribu. e

Notion de verrouillage (suite)

Matrice de compatibilit de verrous e P X P oui non X non non Une transaction ne peut poser un verrou sur une donne que si ce verrou est compatible avec les e verrous qui y sont dj` poss. ea e

Lors de son excution, une transaction peut librer e e certains verrous. Utilisation de la commande U nlock(donne) e

Notion de verrouillage (suite)

T1 : Lock P (A) Lire(A) U nlock(A) Lock P (B) Lire(B) U nlock(B) Af f icher(A + B) Un protocole de verrouillage est une discipline qui dicte aux transactions comment elles demandent et comment elles lib`rent les verrous e

Notion de verrouillage (suite)

Considrer lordonnancement suivant e

T1 Lock X(B) Lire(B) B := B 1000 Ecrire(B)

T2

Lock P (A) Lire(A) Lock P (B) Lock X(A) Ecrire(A) Lire(B) T1 et T2 seront bloques. Nous sommes en site uation de deadlock. Pour rsoudre ce probl`me, e e une des deux transactions doit tre avorte et ses e e verrous librs e e

La possibilit de deadlock existe dans presque tous e les protocoles

Verrouillage ` deux phases a

verrouillage 2PL (two phase locking)

Ce protocole garantit la c-srialisabilit e e

Phase 1: La transaction peut poser des verrous Elle ne peut pas en librer e

Phase 2: La transaction peut librer des verrous e Elle ne peut plus en poser

On associe ` chaque transaction un point de vera rouillage qui correspond au moment o` elle pose u son dernier verrou (la n de la premi`re phase). e On montre alors que les ordonnancements sont quivalents ` lexcution en srie selon lordre des e a e e points de verrouillage des transactions.

Verrouillage ` deux phases a

Le 2PL ne garantit pas labsence de deadlocks

Le 2PL ne garantit pas labsence de cascades

Extension : 2PL strict et 2PL rigoureux

Extension du 2PL

Dans le 2PL stricte, les transactions gardent leurs verrous exclusifs jusquau commit.

Dans le 2PL rigoureux, les transactions gardent tous leurs verrous jusquau commit.

La dirence : Ti, qui vient apr`s Tj , peut crire un e e e objet A apr`s que Tj lait lu et avant que Tj ne soit e valide. e Alors que dans le 2`me cas, Ti ne peut pas modier e un objet accd par Ti tant que celle-ci na pas valid. e e e

Acquisition des verrous

Ce nest gnralement pas ` lutilisateur dinclure dans e e a son code les demandes de verrous.

Si une transaction Ti veut lire/crire un objet D sans e demander explicitement un verrou, alors lalgo suivant est utilis e

Pour lopration de lecture : e Si Ti a un verrou sur D Alors Lire(D) Sinon Tant que il y a un transaction avec un verrou X sur D Faire Attendre FinTantQue Fournir un verrou P ` Ti sur D a Lire(D) FinSi

Acquisition des verrous

Pour lopration dcriture : e e Si Ti a un verrou X sur D Alors Ecrire(D) Sinon Tant que il y a une transaction avec un verrou sur D Faire Attendre FinTantQue Si Ti a dj` un verrou P sur D Alors ea Transformer P en X Sinon Fournir un verrou X sur D ` Ti a Ecrire(D)

On ne dit pas quand est-ce que les verrous sont librs !! e e

Protocole avec estampillage

Le but est davoir des ordonnancements srialisables e quivalents ` lordre chronologique des transactions e a

A chaque transaction est associe une estampille e relative au moment o` elle arrive, i.e Ti avant u Tj ST (Ti) < ST (Tj ) (lheure syst`me ou bien un e simple compteur)

A chaque objet D de la base sont associes 2 ese tampilles 1. E ST (D) : la plus grande des estampilles des transactions qui ont crit D avec succ`s e e 2. L ST (D) : la plus grande des estampilles des transactions qui ont lu D avec succ`s e

Protocole avec estampillage

Supposons que Ti veuille lire D

Si ST (Ti) E ST (D), alors la lecture est autorise e et L ST (D) max{L ST (D), ST (Ti)}

Si ST (Ti) < E ST (D), alors Ti est annule et ree lance avec une nouvelle estampille (car cela veut e dire que Ti essaye de lire une valeur qui a t crite e ee par une transaction qui est arrive apr`s elle) e e

Protocole avec estampillage

Supposons que Ti veuille crire D e

Si T S(Ti) < L ST (D) : dans ce cas, cela veut dire quil y a une transaction qui est arrive apr`s Ti e e et qui a lu D. Ti est annule e

Si T S(Ti) < E ST (D) : si on laisse faire cette criture, alors elle va craser celle faite par une e e transaction arrive apr`s Ti. Ti est annule e e e

Sinon, lcriture est ralise e e e E ST (D) ST (Ti)

Protocole avec estampillage

Soient les transactions T1, T2, T3, T4 et T5 avec les estampilles resp. 1, 2, 3, 4 et 5.

Lordonnancement suivant reprsente une situation o` e u T2 et T4 sont annules e T1 T2 Lire(Y ) Lire(Y ) Lire(Y ) Ecrire(Y ) Lire(Z) Ecrire(Z) Lire(Z) Lire(Z) abort Lire(X) Ecrire(Z) abort Ecrire(X) Ecrire(Z) T3 T4 T5 Lire(X)

Protocole avec estampillage

Lestampillage permet dviter les blocages (les e transactions sont excutes ou bien annules) e e e

Il garantit la c-srialisabilit puisque tous les arcs e e sont de la forme Ti Tj avec ST (Ti) < ST (Tj )

Par contre, le probl`me de rcuprabilit persiste. e e e e Si Ti est annule alors que Tj a lu une valeur crite e e par Ti, alors Tj doit aussi tre annule. Si Tj e e a dj` valid, alors lordonnancement nest pas ea e rcuprable. e e

Protocole bas sur la validation e

Lexcution dune transaction Ti se fait en 3 phases : e

1. Lecture : Les critures se font sur des variables e locales

2. Validation : Tester la validit des critures e e (ne violent elles pas la srialisabilit ?) e e

3. Ecriture : Si la validation russit, alors les critures e e sont retranscrites sur la base

Protocole bas sur la validation e

Pour faire le test de validit, nous avons besoin de e savoir ` quels moments ont lieu les direntes phases. a e Do` lutilisation destampilles : u

1. Dbut(Ti): Le moment o` Ti a dbut e u e e

2. Validation(Ti): Le moment o` Ti a termin sa u e phase prcdente e e

3. Fin(Ti): Le moment o` Ti termine la phase u dcriture e

Protocole bas sur la validation e

La srialisabilit est teste en se basant sur un ese e e tampillage des transactions correspondant ` leur esa tampille de validation, i.e ST (Ti) = V alidation(Ti). La validation de Tj russit si pour chaque Ti telle que e ST (Ti) < ST (Tj )

F in(Ti) < Dbut(Tj ), ou bien e

Dbut(Tj ) < F in(Ti) < validation(Tj ) et lensemble e des donnes crites par Ti est distinct de celui des e e donnes lues par Tj e

Pour le 2`me point: e

Les critures de Tj nont pas deet sur les lectures e de Ti (elles ont lieu apr`s la n des lectures de Ti) e

les critures de Ti nont pas deet sur les lectures e de Tj (Tj ne lit aucun objet crit par Ti) e

Exemple dordonnancement

T1 Lire(B)

T2 Lire(B) B := B 50 Lire(A) A := A + 50

Lire(A) Af f icher(A + B) < valider > Ecrire(B) Ecrire(A) < valider > Note: La mthode de validation permet dviter les e e cascades de Roll back puisque les lectures ne se font que sur des donnes persistantes. e

Granularit du verrouillage e

Nous considrons la hirarchie suivante : e e

Base T able P age T uple Permettre aux transactions de verrouiller nimporte quel niveau mais en respectant un nouveau protocole Avant de verrouiller un objet D, Ti doit avoir un verrou intentionnel sur tous les anctres de D e

IP IX P X P IX

IP IX P X P IX oui oui oui oui oui oui oui oui oui

Granularit du verrouillage e

Nous sommes en prsence dune structure darbre e de la forme


BD Table 1 Table n

Page 11

Page 1m

Tuple 111

Tuple 112

Un noeud D peut tre verrouill en P ou IP si le e e parent est dj` verrouill en IX ou IS ea e D peut tre verrouill en X, P IX ou X si le parent e e de d est verrouill en IX ou P IX e Ti peut librer un verrou sur D si elle ne poss`de e e plus de verrous sur les descendants de D L` aussi, on utilise le verrouillage en deux phases a

Granularit du verrouillage e

Exemples : T1 parcourt R et met ` jour quelques tuples : a

T1 obtient un verrou P IX sur R, ` chaque lecture a dun tuple, elle pose dabord un verrou P , et si elle a besoin de le modier, elle transforme le P en X

T2 utilise un index pour lire une partie de R

T2 pose un verrou IP sur R, ensuite elle obtient des verrous P pour chaque tuple quelle veut lire

T3 lit la table R en entier

T3 demande un verrou S sur R ou bien

Gestion des blocages


Prvenir vs gurir e e 1) Prvenir e

Soit Ti qui demande un verrou en conit avec celui dj` dtenu par Tj ea e Privilgier les plus anciennes transactions (estampile lage): ST (Ti) < ST (Tj ) Ti peut attendre Tj ST (Ti) > ST (Tj ) Ti est annule e Si Ti est relance avec une nouvelle estampille, e alors elle risque dattendre longtemps!! La relancer avec la mme estampille. e Noter quici, seules les transactions demandeuses sont annuls e Privilgier la transaction qui dtient le verrou e e ST (Ti) < ST (Tj ) Ti est annule e ST (Ti) > ST (Tj ) alors Ti attend

Gestion des blocages


Prvenir vs gurir e e 1) Gurir e

Ici, il faut dtecter le blocage. Le syst`me maintient e e un graphe G = (N, A) avec

N = les transactions

Ti Tj ssi Ti attend que Tj lib`re un verrou e Quand Ti demande un verrou dtenu par Tj , alors e larc Ti Tj est rajout au graphe e Ti Tj est supprim quand Tj ne dtient plus le e e verrou demand par Ti e Le syst`me est bloqu ssi G contient un cycle e e

Un algorithme est lanc priodiquement pour tester e e lacyclicit e

Gestion des blocages

Prvenir vs gurir e e Que faire si un blocage est dtect ? e e

Il faut annuler une transaction participant au cycle. Choisir celle qui est la moins proche de son tat de e validation Choisir une transaction qui na pas t annule plusieurs e e e fois ...

Le probl`me e

La suppression dun tuple ne peut se faire que si Ti dtient un verrou X sur ce tuple e

Linsertion dun tuple par Tj implique la dtention e dun verrou X par Tj sur ce tuple

1. Ti veut supprimer tous les comptes dont le solde est > 300. Elle verrouille donc tous ces tuples.

2. Tj ins`re un compte avec un solde > 400. Noter e quil ny a pas conit.

3. Ensuite, Ti ache les comptes dont le solde est > 200. Le nouveau tuple est ach. e

Noter que cette excution nest pas quivalente ` une e e a excution en srie pourtant lordonnancement est ce e srialisable!! e

Les transactions et SQL

Une transaction commence automatiquement ` lexcution a e dune commande SQL SELECT, INSERT, DELETE, UPDATE, CREATE TABLE . . .

Une transaction se termine par lexcution de COMe MIT ou ROLLBACK. Toutes les commandes excutes e e entre le dbut et la n font partie de la transaction e

Chaque transaction est caractrise par : un mode e e dacc`s et un niveau disolation e

Il y a deux modes dacc`s: READ ONLY et READ WRITE. e Cest ` lutilisateur de le prciser au dbut de la transa e e action.

Les transactions et SQL (1)

Le niveau disolation exprime le degrs dexposition e dune transaction aux eets des autres transactions. Il y a 4 niveaux

1. READ UNCOMMITED

2. READ COMMITED

3. REPEATABLE READ

4. SERIALISABLE

Les transactions et SQL(2)

SERIALIZABLE: Ti obtient les verrous sur les objets quelle acc`de et les garde jusqu` son commit e a (2PL rigoureux). Les autres transactions ne peuvent faire dinsertion ou de modication car Ti verrouille soit (i) toute la table soit (2) utilise un verrouillage dindex

REPEATABLE READ: Utilise le 2PL rigoureux mais ne verrouille que des objets individuels (pas dindex ni collection dobjets)

READ COMMITTED: Les verrous X sur les objets sont gards jusqu` la n. Les verrous P sont librs e a e e immdiatement apr`s la lecture. e e

READ UNCOMMITTED: Ti na pas le droit de faire des critures et est autorise ` faire des lectures sans e e a avoir ` demander de verrous P a

Les transactions et SQL(3)

Une lecture impropre (dirty read) a lieu quand Ti lit un objet A modi par Tj alors que Tj na pas e encore valid e

Une lecture non rptable (unrepeatable read) a e e lieu quand Ti lit A puis Tj le modie ensuite Ti relit A.
Niveau READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALISABLE dirty read possible Non Non Non unrep. read possible possible Non Non fantme o possible possible possible Non

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE READ ONLY

Exemple de SGBD : Oracle 8

Oracle 8 utilise un mcanisme utilisant le multivere sionnement: Chaque objet peut avoir plusieurs versions. Si Ti veut lire A alors le syst`me lui fournit e la version de A dont le E ST (A) est le max avec E ST (A) < ST (Ti). Si Ti veut crire A et ST (Ti) L ST (A), alors une e nouvelle version de A est cre avec L ST (A) = ST (Ti). ee

Reprise sur Panne


Acc`s aux donnes e e

Deux types de pages: mmoire e

pages disque des pages

Les mouvements des pages entre disque et MC se font par lappel des procdures: Input(P)et e Output(P)

Chaque transaction Ti poss`de un espace de trae vail priv. Elle manipule des copies des objets e de la base. La copie de lobjet X manipule par e Ti sera not xi e

Les aectations entre X et xi se font par les appels ` Lire(X) et Ecrire(X) a

Lopration Output(PX) nest pas obligatoirement e excute juste apr`s lappel ` Ecrire(X) e e e a

Le probl`me e

Lors dune panne, certaines transactions doivent tre e refaites (celles qui ont fait le commit) et dautres doivent tre annules e e

Supposons que le tampon puisse contenir 3 pages, les tuples t1, t2, t3 et t4 se trouvent dans 4 pages direntes e

1. Soit T0 qui modie les 4 tuples. A un certain moment, une page doit tre remplace. Si Ti narrive e e pas ` faire le commit, alors il faut annuler leet a de ses modications.

2. Soit T1 qui modie t1 et t2 puis fait son commit. Avant que les modifs de T1 ne soient sur le disque, T2 est lance. T2 modie t2, t3 et t4 puis elle e choue. Il faut dans ce cas, annuler T2 et relancer e T1 car ses modifs ne sont pas reportes sur le e disque

Reprise avec Log

Nous supposons dabord que les transactions sont excutes en srie (i.e pas de concurrence) e e e

Un chier Log (ou chier Trace) est maintenu pour garder la trace des direntes oprations excute e e e e sur la base

Quand une transaction Ti dbute, lenregistrement e Ti, start est insr dans le Log e e

Avant que Ti nexcute Ecrire(X), lenregistrement e Ti, X, V1, V2 est rajout dans le Log avec V1 et V2 e les valeurs avant et apr`s lcriture e e

Quand Ti termine, lenregistrement Ticommit est insr e e

On suppose que les critures dans le Log ne passent e pas par un tampon mais se font directement sur le disque

Modes de ralisation des mises ` jour e a

Nous allons considrer deux modes de ralisation des e e mises ` jours a

1. Dir: Ce nest quapr`s lexcution du come e e e mit, que les nouvelles valeurs sont eectivement ralises. e e

2. Immdiat: Les critures sont traduites en des e e aectations X xi

M`j dires a e e

Toutes les modications sont retranscrites dans le Log

Ti commence par crire Start Ti e

Lopration Ecrire(X) rsulte en une insertion de e e Ti, X, V , o` V est la nouvelle valeur. Jusque l`, u a X nest pas modi. e

Quand Ti termine, Ti Commit est insr e e

A la n, le Log est utilis pour raliser les m`j e e a dires e e

Remarque : Noter la forme des enregistrements Ti, X, V . On na pas besoin de lancienne valeur car elle est dans X qui nest pas modi. e

M`j dires (Suite) a e e

Durant la reprise, suite ` un crash, une transaction a doit tre refaite ssi TiStart et TiCommit sont e tous deux prsents dans le Log e

Dans ce cas, lopration Redo(Ti) met ` jour les e a X en utilisant le Log

Exemple : T0 T1 Lire(A) Lire(C) A := A 50 C := C 100 Ecrire(A) Ecrire(C) Lire(B) B := B + 50 Ecrire(B)

M`j dires (Suite) a e e

Ci-dessous, la conguration du Log est reprsente e e ` trois instants dirents. On suppose quau dpart a e e A = 1000, B = 2000 et C = 700. T0start T0, A, 950 T0, B, 2050 T0start T0, A, 950 T0, B, 2050 T0commit T1start T1, C, 600 (b) T0start T0, A, 950 T0, B, 2050 T0commit T1start T1, C, 600 T1commit (c)

(a)

Si une panne a lieu ` lun de ses instants alors a (a) Pas de redo ` faire a (b) redo(T0) doit tre excut e e e (c) redo(T0) et redo(T1) doivent tre excuts e e e dans cet ordre

M`j immdiates a e

Ici, nous avons en plus besoin de lopration undo(Ti) e qui permet dannuler leet dune criture non e valide. Les enregistrements du Log doivent donc e contenir lancienne valeur

Se rappeler que lopration output(P) peut avoir e lieu apr`s ou avant le commit e

Noter aussi que lordre de loutput des pages peut tre dirent de celui dans lequel ils sont mode e is (cela dpend de la technique de gestion des e e tampons)

Exemple de M`j dires a e e


Log T0start T0, A, 1000, 950 T0, B, 2000, 2050 Ecrire Output

A = 950 B = 2050 T0commit T1start T1, C, 700, 600 C = 600 PB , PC T1commit PA

M`j immdiates (suite) a e

undo(Ti) restaure la valeur des objets modis e par Ti. Ceci est ralis en parcourant le Log en e e commenant par la n. c

Durant la reprise suite ` une panne, a Ti doit tre annule (i.e undo(Ti) excute) si e e e e le Log contient Tistart mais pas Ticommit Ti doit tre refaite (i.e redo(Ti) est excute) e e e si le Log contient les deux enregistrements

Les oprations undo sont excutes avant les opration e e e e de redo

Exemple de reprise
T0start T0, A, 1000, 950 T0, B, 2000, 2050 T0commit T1start T1, C, 700, 600 (b) T0start T0, A, 1000, 950 T0, B, 2000, 2050 T0commit T1start T1, C, 700, 600 T1commit (c)

T0start T0, A, 1000, 950 T0, B, 2000, 2050

(a)

(a) undo(T0): B reprend la valeur 2000 et A la valeur 1000

(b) undo(T1) et redo(T0): C reprend la valeur 700, ensuite A et B leur sont aectes resp. 950 et 2050. e

(c) redo(T0) et redo(T1): A et B sont mis ` 950 et a 2050 resp. Ensuite C est mis ` 600 a

Points de reprise (Checkpoint)

Il nest pas pratique de parcourir tout le Log durant la reprise.

Priodiquement, on output toutes les pages sur e le disque, et suite ` a, un enregistrement checkpoint ac est insr dans le Log e e

Durant la reprise, nous considrons seulement seulee ment la transaction Ti la plus rcente qui a dbut e e e avant le checkpoint, ainsi celles qui lui succ`dent e
T_panne temps

T_checkpoint T1 T2 T3 T4

T1 est ignore, T2 et T3 sont refaites, T4 est ane nule. e

En prsence de la concurrence e

Nous supposons le protocole verrouillage en deux phases strict (i.e les m`j des Ti non encore valides a e sont invisibles aux autres Tj )

Nous supposons aussi quune page peut tre mode ie par plusieurs transactions e

Les insertions dans le Log restent inchanges e

Le checkpoint est modi: e Lenregistrement checkpoint L est insr o` L e e u reprsente la liste des Ti actives lors du checkpoint e

En prsence de la concurrence (suite) e

La reprise se fait comme suit :

1. Initialiser les listes undo-liste et redo-liste ` vide a

2. Parcourir le Log en commenant par la n jusqu` c a la rencontre de checkpointL . Pour chaque enregistrement rencontr durant le parcours e si cest Ticommit , alors rajouter Ti ` redo-liste a si cest Tistart et si Ti nest pas dans la redoliste, la rajouter dans undo-liste

3. Pour chaque Ti dans L, si Ti nest pas dans redoliste, alors la rajouter dans undo-liste

En prsence de la concurrence (suite) e

A ce niveau, undo-liste contient les Ti incompl`tes ` e a annuler, et redo-liste contient les Ti valides donc ` e a refaire.

4 Parcourir le Log de la n et sarrter quand tous e les startTi des Ti dans undo-liste ont t rene e contrs. e Durant ce parcours, annuler toute opration e de Ti undo-liste

5 Se positionner au niveau du plus rcent checkpointL e

6 Parcourir le Log jusqu` la n, et refaire chaque a opration de Ti redo-liste e

Exemple
T0start T0, A, 0, 10 T0commit T1start T1, B, 0, 10 T2start T2, C, 0, 10 T2, C, 10, 20 checkpoint{T1, T2} T3start T3, A, 10, 20 T3, D, 0, 10 T3commit

ltape 4 sarrte l` e e a

Vous aimerez peut-être aussi