document

18
Préambule NFP 107 Vertigo 1 Systèmes de gestion de bases de données NFP 107 Les techniques du contrôle de concurrence Philippe Rigaux [email protected] http://idf.pleiad.net/index.php

Upload: tayten

Post on 24-Feb-2016

31 views

Category:

Documents


0 download

DESCRIPTION

Systèmes de gestion de bases de données NFP 107 Les techniques du contrôle de concurrence Philippe Rigaux [email protected]. http://idf.pleiad.net/index.php. Contenu du cours. Techniques de versionnement Que se passe-t-il quand plusieurs transactions travaillent sur les mêmes données - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Document

Préambule

NFP 107Vertigo 1

Systèmes de gestion de bases de données

NFP 107Les techniques du contrôle de

concurrence

Philippe [email protected]

http://idf.pleiad.net/index.php

Page 2: Document

Préambule

NFP 107Vertigo

Contenu du cours•Techniques de versionnement

▫Que se passe-t-il quand plusieurs transactions travaillent sur les mêmes données

•Techniques de verrouillage▫Les différents types de verrous, et leur impact

•Algorithme de sérialisabilité▫Algorithme de verrouillage à deux phases▫Algorithme de contrôle multiversions

2

Page 3: Document

Préambule

NFP 107Vertigo

Versionnement•Toute transaction en cours a deux choix en

permanence:▫Valider les maj effectuées avec commit▫Les annuler avec rollback

3

eavant

Imageavant

Imageaprès

temps

T modifie eavant en eaprès

eavant

eaprès

T lit e

T’ lit e

T valide (commit)?

On peut effacerl’image avant (sûr?)

T annule (rollback)?

On remplaceimage aprèspar image avant

Page 4: Document

Préambule

NFP 107Vertigo

Quelques questions (et réponses)•Comment une transaction sait-elle si elle doit

lire dans l’image avant ou après▫En mode READ UNCOMMITTED: on lit toujours

dans l’image après (lecture sale)!▫Autres modes: si e est en cours de modification par

T, T’ lit dans l’image avant.•Peut-on avoir plusieurs versions en cours de

modification dans l’image avant?▫Non! Si T’ veut modifier e (en cours de modification

par T) -> T’ en attente (pas d’écriture sale).•Quand efface-t-on l’image avant?

▫Dépend du mode …. 4

Page 5: Document

Préambule

NFP 107Vertigo

Estampillage et cohérence•Pour assurer la cohérence, on doit associer une

estampille temporelle à chaque version.▫C’est l’estampille qui permet de gérer la

cohérence des lectures▫L’estampille est le moment du dernier commit

•Chaque transaction a aussi une estampille

5

e14avant

Imageavant

Imageaprès

temps

T23 modifie eavant en eaprès

eaprès

T23 lit e

T18’ lit e

T23 valide à t=30

Peut-on effacer l’image avant?

e14avant

T18’ lit e

e30après

On estampillela nouvelle version de e

OUI, en mode READ (UN)COMMITTEDNON, en mode REPEATABLE READ et SERIALIZABLE

e6avant

T ’’8 lit eEt s’il existe une transaction estampillée 8?Alors il faut garder plusieurs versions

Page 6: Document

Préambule

NFP 107Vertigo

Versionnement: conclusion•Notions essentielles: image avant, image après• Il ne peut y avoir qu’une image après (pas

d’écritures concurrentes)•On peut préserver plusieurs images avant•Lectures cohérentes => travail complexe et

coûteux. Exemple, pour T’’8▫Lire dans l’image après -> la donnée est en cours

de modification.▫Puis lire dans l’image avant -> elle est estampillée

14, donc pas bon▫Remonter encore d’un cran -> on trouve e6, OK

6

Page 7: Document

Préambule

NFP 107Vertigo

Verrouillage•Le contrôle de cohérence implique la pose de

verrous sur les données lues ou écrites.•Verrous partagés (VP): plusieurs VP peuvent

être posés simultanément sur une même donnée par plusieurs transactions.

•Verrous exclusifs (VE): si un seul VE est posé sur une donnée, c’est le seul verrou.

•Le choix du type de verrou à poser pour chaque opération dépend du mode d’isolation

7

Page 8: Document

Préambule

NFP 107Vertigo

Pose d’un verrou partagé•Une transaction T veut poser un verrou partagé

sur une donnée d▫T doit s’assurer qu’un verrou exclusif n’est pas

posé sur d.▫Si c’est le cas (pas de VE), le verrou peut être

posé, quel que soit par ailleurs l’existence d’autres VP sur d.

▫Sinon (un VE existe), T est mis en attente.•Très important: quand T est mise en attente,

cela concerne toutes les opérations de d.

8

Page 9: Document

Préambule

NFP 107Vertigo

Pose d’un verrou exclusif

•Une transaction T veut poser un verrou exclusif sur une donnée d▫T doit s’assurer qu’aucun verrou n’est posé sur d,

quel que soit son type (VE ou VP)▫Si c’est le cas (pas de verrou), le VE peut être

posé.▫Sinon (un verrou existe), T est mis en attente.

•Même remarque: quand T est mise en attente, cela concerne toutes les opérations.

9

Page 10: Document

Préambule

NFP 107Vertigo

Exemples

10

T1 T2

x VPy

•On considère deux transactions, T1 et T2, et deux données x et y.•T1 veut poser un VP sur x? •T2 veut poser un VE sur y? •T1 veut poser un VP sur y?

•T1 en attente •T2 veut poser un VP sur x?

T1 T2

xy

T1 T2

x VPy VE

T1 T2

x VP VPy VE en attente VE

T1 T2

x VPy VE en attente VE

Page 11: Document

Préambule

NFP 107Vertigo

Caractérisation des exécutions non sérialisables •Pour savoir quand et comment poser des

verrous, on va caractériser les exécutions non sérialisables.

•Conflit: deux opérations pi[x] et qj[y] sont en conflit si x = y, i != j, et p ou q est une écriture.▫r1[x] et r2[x] sont-elles en conflit?▫r1[x] et w2[x] sont-elles en conflit?▫r1[x] et w2[y] sont-elles en conflit?▫r1[x] et w1[x] sont-elles en conflit?

11

Page 12: Document

Préambule

NFP 107Vertigo

Relation entre les transactions d’une exécution concurrente •Soit H une exécution concurrente comprenant

plusieurs transactions T1, T2, …, Tn•On définit la relation < sur cet ensemble par:

T1 < T2 ssi il existe une opération p de T1, q de T2 telles que

p et q sont en conflitp apparaît avant q dans l’exécution H.

12

Page 13: Document

Préambule

NFP 107Vertigo

Exemple

• Exécution de deux procédures Réservation()▫r1[s]r1[c1] r2[s] r2[c2] w2[s]w2[c2] w1[s]w1[c1]▫Exemple des mises à jour perdues!

•Les conflits▫r1[s] est en conflit avec w2[s]▫r2[s] est en conflit avec w1[s]▫w2[s] est en conflit avec w1[s]

•Donc on a T1 < T2 et T2 < T1•Le graphe de < est cyclique.

13

Page 14: Document

Préambule

NFP 107Vertigo

Théorème de sérialisabilité•Th: une exécution concurrente est sérialisable

ssi le graphe de < est acyclique.•L’exemple précédent correspond à une

exécution non sérialisable.•Le contrôle de concurrence (en mode

SERIALIZABLE) consiste à s’assurer qu’aucun cycle n’apparaît dans une exécution concurrente.

•Plusieurs algorithmes. Le plus ancien: algorithme de verrouillage à deux phases (2PL)

14

Page 15: Document

Préambule

NFP 107Vertigo

Algorithme de verrouillage à deux phases•Le protocole est assuré par un scheduler• Il se décrit très simplement:

▫Un verrou partagé est posé sur les lectures▫Un verrou exclusif est posé sur les écritures▫Les verrous ne sont pas relâchés avant le commit

ou le rollback.•C’est un protocole dit « pessimiste » qui vise à

prévenir les conflits• Il est facile de voir que lectures sales et

écritures sales sont impossibles. 15

Page 16: Document

Préambule

NFP 107Vertigo

Exemple de 2PL• Soit l’exécution suivante:

r1[x]w2[x]w2[y]C2w1[y]C1

• Non sérialisable (pourquoi?)• Algorithme 2PL:

• T1 pose un verrou partagé sur x, et lit x• T2 tente de poser un verrou exclusif sur x et est mise

en attente• T1 pose un verrou exclusif sur y, modifie y, et valide• T2 est libérée : elle pose un verrou exclusif sur x• T2 verrouille et modifie y, puis valide.

• Finalement: r1[x] w1[y]C1w2[x]w2[y]C2

16

Page 17: Document

Préambule

NFP 107Vertigo

Interblocages (deadlocks)• Inconvénient du 2PL: risque élevé

d’interblocage.•Exemple des mises à jour perdues:

r1[s]r1[c1] r2[s] r2[c2] w2[s]w2[c2] w1[s]w1[c1]

17

T1 T2

sc1c2

T1 T2

s VPc1c2

T1 pose un VP sur s, et lit sT1 pose un VP sur c1, et lit c1

T1 T2

s VPc1 VPc2

T2 même chose: pose des VP sur s et c2

T1 T2

s VP VPc1 VPc2 VP

T1 T2

s VP VP (attente VE)c1 VPc2 VP

T1 veut poser un VE sur s: mise en attente!T2 veut poser un VE sur s: mise en attente!

T1 T2

s VP (attente VE) VP (attente VE)

c1 VPc2 VP

Page 18: Document

Préambule

NFP 107Vertigo

Conclusion•Ce qu’il faut retenir

▫Les SGBD utilisent un système de versionnement qui permet de préserver l’état de la base sur une durée très longue -> coût important

▫Il ne peut y avoir qu’une version (la dernière) en cours de mise à jour

▫Pour assurer la propriété précédente, les écritures posent toujours un verrou exclusif

▫Les lectures ne posent pas de verrou en général

18