64
Transactions Transactions Witold Litwin Witold Litwin

1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

Embed Size (px)

Citation preview

Page 1: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

1

TransactionsTransactionsTransactionsTransactions

Witold LitwinWitold Litwin

Page 2: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

2

IntroductionIntroductionIntroductionIntroduction

Beaucoup d'opérations sur une BD doivent Beaucoup d'opérations sur une BD doivent être atomiques:être atomiques:

Transfert d'argent entre les comptes:Transfert d'argent entre les comptes:UPDATE Compte1UPDATE Compte1

Val = Val -100Val = Val -100

UPDATE Compte2UPDATE Compte2

Val = Val + 100Val = Val + 100

Si seulement une de ces requêtes est Si seulement une de ces requêtes est exécutée, la BD perd sa consistanceexécutée, la BD perd sa consistance

Page 3: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

3

TransactionsTransactionsTransactionsTransactions

Opérations Opérations aatomiquestomiques inexprimables avec une inexprimables avec une requête relationnelle.requête relationnelle.– entièrement ou pas du toutentièrement ou pas du tout

Préservant la Préservant la cconsistance onsistance de la BDde la BD comme si l'usager était comme si l'usager était iisolé solé sur la BDsur la BD A effet A effet ddurableurable sur la BD, une fois terminées sur la BD, une fois terminées

comme prévucomme prévu

Modèle Modèle ACIDACID de transactions de transactions

Page 4: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

4

Primitives de gestion de transactionsPrimitives de gestion de transactionsPrimitives de gestion de transactionsPrimitives de gestion de transactions

BEGIN, COMMIT, ROLLBACKBEGIN, COMMIT, ROLLBACKBEGIN TRANSACTIONBEGIN TRANSACTION

UPDATE Compte1UPDATE Compte1

Val = Val -100Val = Val -100

IF SQLCODE <> 0 ROLLBACK ; EXIT ;IF SQLCODE <> 0 ROLLBACK ; EXIT ;

UPDATE Compte2UPDATE Compte2

Val = Val + 100Val = Val + 100

IF SQLCODE <> 0 ROLLBACK ; EXIT;IF SQLCODE <> 0 ROLLBACK ; EXIT;

COMMITCOMMIT

Page 5: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

5

Implémentation de transactionsImplémentation de transactionsImplémentation de transactionsImplémentation de transactions

TID : Identificateur de transactionTID : Identificateur de transaction Inscription dans la BD seulement après le COMMITInscription dans la BD seulement après le COMMIT Journalisation:Journalisation:

– Toute opération d'une transaction est notée avant et après Toute opération d'une transaction est notée avant et après l'exécution dans un fichier l'exécution dans un fichier journaljournal présumé à l'abris de pannes présumé à l'abris de pannes

– Les opérations de commitement sont notées avant d'être Les opérations de commitement sont notées avant d'être exécutées sur la BD exécutées sur la BD (write- ahead log protocol)(write- ahead log protocol)

Points de reprise (checkpoints)Points de reprise (checkpoints)– sauvegardes de l'état de la BD et notamment de TIDs de sauvegardes de l'état de la BD et notamment de TIDs de

transactions en cours à intervalles régulierstransactions en cours à intervalles réguliers

Page 6: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

6

Et si la casse arrive...Et si la casse arrive...Et si la casse arrive...Et si la casse arrive...

On ferme l'accès à la baseOn ferme l'accès à la base On reprend le dernier checkpointOn reprend le dernier checkpoint On retrouve sur le journal toutes les On retrouve sur le journal toutes les

transactions transactions commises commises aprèsaprès– commencées avant ou après le checkpointcommencées avant ou après le checkpoint

On reexécute chronologiquement ces On reexécute chronologiquement ces transactionstransactions– et seulement ces transactionset seulement ces transactions

On rouvre la base aux usagersOn rouvre la base aux usagers

Page 7: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

7

Transactions non-ACIDTransactions non-ACIDTransactions non-ACIDTransactions non-ACID

Transactions imbriquéesTransactions imbriquées Transactions longuesTransactions longues Transactions distribuéesTransactions distribuées

– exigent un commitement à 2 phases (2 PC)exigent un commitement à 2 phases (2 PC)

Page 8: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

8

ConcurrenceConcurrenceConcurrenceConcurrence

Les BDs étant partagées, les transactions Les BDs étant partagées, les transactions pourraient être exécutées:pourraient être exécutées:– l'une après l'autrel'une après l'autre– simultanémentsimultanément

» meilleures performancesmeilleures performances

» possibilités d'inconsistances dans la basepossibilités d'inconsistances dans la base

Théorie de concurrence analyse les Théorie de concurrence analyse les problèmes d'accès simultanéproblèmes d'accès simultané

Page 9: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

9

ExempleExempleExempleExemple

A = 100

R1 (A) R2 (A)

A := A +100

W1 (A) A = 200

A := A +200

La base

Page 10: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

10

ExempleExempleExempleExemple

A = 100

R1 (A) R2 (A)

A := A +100

W1 (A) A = 200

A := A +200

W2 (A)A = 300

La base

Page 11: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

11

Gestion de la concurrenceGestion de la concurrenceGestion de la concurrenceGestion de la concurrence

Verrouillage exclusifVerrouillage exclusif– toute opération d'une transaction T sur une donnée toute opération d'une transaction T sur une donnée

D ne peut fait que si T obtient un D ne peut fait que si T obtient un verrouverrou sur D sur D– si D est déjà verrouillé par T' quand T le demande, si D est déjà verrouillé par T' quand T le demande,

alors T est mis en attentealors T est mis en attente Ce type de verrou est dit Ce type de verrou est dit exclusifexclusif On vient de définir un On vient de définir un protocoleprotocole de gestion de de gestion de

concurrenceconcurrence– Protocole 1Protocole 1

Page 12: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

12

ExempleExempleExempleExemple

A = 100

R1 (A)

A := A +100

W1 (A) A = 200

La base

L (A)L (A)

U (A)

Page 13: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

13

ExempleExempleExempleExemple

A = 100

R1 (A)

R2 (A)

A := A +100

W1 (A) A = 200

A := A +200

La base

L (A)L (A)

U (A)

A = 400

Page 14: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

14

Verrouillage partagéVerrouillage partagéVerrouillage partagéVerrouillage partagé

les lectures ont les les lectures ont les verrous partagésverrous partagés– T et T' peuvent T et T' peuvent lirelire D simultanément D simultanément

les écritures doivent obtenir les les écritures doivent obtenir les verrous exclusifsverrous exclusifs– si D est déjà verrouillé par T', alors T est mis en attentesi D est déjà verrouillé par T', alors T est mis en attente

Avantage:Avantage:– meilleures performances, mais...meilleures performances, mais...

C'est la méthode la plus usitéC'est la méthode la plus usité– Protocole 2Protocole 2

Page 15: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

15

ExempleExempleExempleExemple

A = 100R1 (A)

R2 (A)A := A +100

A := A +200

La base

Lr (A)Lr (A)

Lw (A)

Page 16: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

16

ExempleExempleExempleExemple

A = 100R1 (A)

R2 (A)A := A +100

A := A +200

La base

Lr (A)Lr (A)

Lw (A)Lw (A)

Page 17: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

17

Verrou mortelVerrou mortelVerrou mortelVerrou mortel

Les transactions s'attendent mutuellement Les transactions s'attendent mutuellement (deadlock)(deadlock)

Solution typique:Solution typique:– avorter une de transactions (la avorter une de transactions (la victimevictime))– le choix est fait par le le choix est fait par le gestionnaire des verrousgestionnaire des verrous

(lock manager)(lock manager)

Page 18: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

18

ExempleExempleExempleExemple

A = 100R1 (A)

R2 (A)A := A +100

A := A +200

A = 300

La base

Lr (A)Lr (A)

Lw (A)Lw (A)

A

W2 (A)

Page 19: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

19

A = 300R1 (A)

A := A +100

A = 400

La base

Lr (A)

Lw (A)

W1 (A)

Page 20: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

20

Les exécutions correctesLes exécutions correctesLes exécutions correctesLes exécutions correctes

SérialisabilitéSérialisabilitéLes exécutions concurrentes sont correctes ssi

leur résultat est équivalent à celui d'une exécution sérielle

Le critère naturel et le plus populaireLe critère naturel et le plus populaire– débattu néanmoins pour les systèmes débattu néanmoins pour les systèmes

multibases distribuésmultibases distribués» pourquoi ?pourquoi ?

Page 21: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

21

T1

T3x := x+2

x := x*2

x := x/2

x := 10 x := ?

T2

Page 22: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

22

T1

T2

T3

T1 T2 T3

T1T2 T3

T1 T2T3

T3 T1 T2

Exécutions sérielles équivalentes

x := x+2

x := x*2

x := x/2

x := 10 x := ?

Page 23: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

23

Les verrous / la sérialisabilité Les verrous / la sérialisabilité Les verrous / la sérialisabilité Les verrous / la sérialisabilité

Problème de "fantôme"Problème de "fantôme"– existe pour les deux protocoles: 1 et 2existe pour les deux protocoles: 1 et 2

102030405060

T1R

L[R(1)], S := S + R(1), U[R(1)]L[R(2)], S := S + R(2), U[R(2)]L[R(3)], S := S + R(3), U[R(3)]........L[R(6)], S := S + R(6), U[R(6)]

T2

L[R((3) R(3) := R(3) + 5, U[R(3)]L[R((6) R(6) := R(6) - 5, U[R(6)]

• Le résultat de T1 ? Temps

Page 24: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

24

Verrouillage à 2 PhasesVerrouillage à 2 PhasesVerrouillage à 2 PhasesVerrouillage à 2 Phases

1-ère phase : tous les verrouillages2-ème phase : tous les déverouillages

2-ème phase est le +souvent après lecommit (strict 2-PL). Pourquoi ?

Problème:Verrou mortelMal adapté aux transactions longues

les estampilles semblent meilleurs dans ce but

Page 25: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

25

L(a)

U(b)

U(a,b)

L(a)

L(b)

U(a)

L(b)

CC

L(a)

U(a,b)

C

L(b)

Schedules 2PLSchedules 2PL

Page 26: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

26

L(a)

U(b)

U(a,b)

L(a)

L(b)

U(a)

L(b)

CC

L(a)

U(a,b)

C

L(b)

U(b)

L(a)

L(b)

C

U(a)

Page 27: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

27

Problème de "fantôme"Problème de "fantôme"Problème de "fantôme"Problème de "fantôme"

Est-ce que l'exécution discutée est conforme Est-ce que l'exécution discutée est conforme à 2PL ?à 2PL ?

Sinon comment la rendre conforme ?Sinon comment la rendre conforme ? Le résultat, serait-il alors correct ?Le résultat, serait-il alors correct ?

Page 28: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

28

Dans les exemples on a verrouillé des tuplesDans les exemples on a verrouillé des tuples Une table peut contenir des millions de Une table peut contenir des millions de

tuplestuples 2-PL peut alors conduire à la gestion de 2-PL peut alors conduire à la gestion de

millions de verrousmillions de verrous Est-ce la solution la plus performante ?Est-ce la solution la plus performante ? Pas toujoursPas toujours

Granularité de verrousGranularité de verrousGranularité de verrousGranularité de verrous

Page 29: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

29

Granularité de verrousGranularité de verrousGranularité de verrousGranularité de verrous

attributattribut tupletuple pagepage table définie par un predicattable définie par un predicat table de basetable de base base de donnéesbase de données

– impossible d'inserer/supprimer MAJ un tuple d'une page impossible d'inserer/supprimer MAJ un tuple d'une page ou table ou base vérouilléeou table ou base vérouillée

Page 30: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

30

Granularité de verrousGranularité de verrousGranularité de verrousGranularité de verrous

Granularité fine offre + de concurrenceGranularité fine offre + de concurrence Mais aussi plus délicats à gérerMais aussi plus délicats à gérer

– tables de verrous + grandestables de verrous + grandes– + de possibilités de verrou mortel+ de possibilités de verrou mortel

En pratique en général on verrouilleEn pratique en général on verrouille– tuplestuples– pagespages

Elargissement d'un verrou (lock escalation) :Elargissement d'un verrou (lock escalation) :– un verrou fin est remplacé par un verrou moins finun verrou fin est remplacé par un verrou moins fin

– tuple -> tabletuple -> table

Page 31: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

31

Niveaux d'isolationNiveaux d'isolationNiveaux d'isolationNiveaux d'isolation

Sérialisabilité totale coûte cherSérialisabilité totale coûte cher N'est pas nécessaires pour toutes transactionsN'est pas nécessaires pour toutes transactions Les SGBD et SQL-3 offrent dès lors différents Les SGBD et SQL-3 offrent dès lors différents

niveaux d'isolation niveaux d'isolation de transactionsde transactions– à utiliser avec des précautionsà utiliser avec des précautions

Page 32: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

32

Niveaux d'isolationNiveaux d'isolationNiveaux d'isolationNiveaux d'isolation

LongsW-locksde tuples

LongsR-locks de

tuples

LongsR et W-locksde predicats

R-Uncommitted(dirty reads)

N.A(R-only) N N

R-Committed(cursor stability) O N N

R- Repeatable O O NSerializable O O O

Les locks courts (short-term locks), latches, sont lâchés tout-de-suiteLes locks longs sont maintenus jusqu'à la fin de la transaction

dégréede concurrence

Page 33: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

33

Read UncommittedRead UncommittedRead UncommittedRead Uncommitted

exec sql set transaction exec sql set transaction read uncommittedread uncommitted En SQL-3, une telle transaction est par défaut En SQL-3, une telle transaction est par défaut Read OnlyRead Only

– pour prévenir les MAJs perduespour prévenir les MAJs perdues» les Write ne sont possibles que par une transaction de les Write ne sont possibles que par une transaction de

niveau R-Committed au moinsniveau R-Committed au moins» une telle transaction est par défaut Read Write une telle transaction est par défaut Read Write

– sauf une déclaration Read Only dans l'ordre Set sauf une déclaration Read Only dans l'ordre Set TransactionTransaction

fausses valeurs de fonctions agrégat. sont possiblesfausses valeurs de fonctions agrégat. sont possibles valeurs erronées dérivées de celles non-commises peuvent se valeurs erronées dérivées de celles non-commises peuvent se

propager entre les transactions propager entre les transactions

Page 34: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

34

Read CommittedRead CommittedRead CommittedRead Committed

exec sql set transaction exec sql set transaction read committedread committed Seules les valeurs commises sont lues Seules les valeurs commises sont lues

– en utilisent R-latches de tuplesen utilisent R-latches de tuples Les écritures utilisent W-locks de tuplesLes écritures utilisent W-locks de tuples Les lectures successives d'une donnée positionnée par le Les lectures successives d'une donnée positionnée par le

curseur lisent toujours une même valeurcurseur lisent toujours une même valeur– d'où le nom d'où le nom cursor stabilitycursor stability

Un retour du curseur sur une donnée dans une même Un retour du curseur sur une donnée dans une même transaction peut par contre lire une valeur différentetransaction peut par contre lire une valeur différente

Il n'y a pas de MAJ perduesIl n'y a pas de MAJ perdues

– sauf si on le veut profondémentsauf si on le veut profondément Le calcul d'une fonction agrégat peut être erronéeLe calcul d'une fonction agrégat peut être erronée

Page 35: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

35

Pas de MAJ perduePas de MAJ perduePas de MAJ perduePas de MAJ perdue

branch est la clébranch est la clé Le tuple '123' est verrouillé jusqu'à commitLe tuple '123' est verrouillé jusqu'à commit

exec sql declare cursor d for exec sql declare cursor d for

select bal from acc where branch = '123' for update of bal ;select bal from acc where branch = '123' for update of bal ;

exec sql set transaction exec sql set transaction read committedread committed ; ;

exec sql open d ;exec sql open d ;

exec sql exec sql fetchfetch d into :bal ; d into :bal ;

bal = bal +5 ;bal = bal +5 ; /* lang. source/* lang. source

exec sql set bal = :bal where current of d ;exec sql set bal = :bal where current of d ;

exec sql close d ;exec sql close d ;

exec sql commit work ;exec sql commit work ;

Page 36: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

36

MAJ perdue MAJ perdue MAJ perdue MAJ perdue

exec sql set transaction exec sql set transaction read committedread committed ; ;

exec sql select bal into :bal from acc where branch = '123' ;exec sql select bal into :bal from acc where branch = '123' ;

bal = bal +5 ;bal = bal +5 ; /* lang. source/* lang. source

exec sql update acc set bal = :bal where branch = '123' ;exec sql update acc set bal = :bal where branch = '123' ;

exec sql commit work ;exec sql commit work ;

Pourquoi ? Pourquoi ?

Page 37: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

37

Read RepeatableRead RepeatableRead RepeatableRead Repeatable

exec sql set transaction exec sql set transaction read repeatableread repeatable

On utilise R-locks et W-locks de tuplesOn utilise R-locks et W-locks de tuples Les lectures d'une donnée peuvent être répétées Les lectures d'une donnée peuvent être répétées

dans une transactiondans une transaction Une fonction agrégat peut-être correctement Une fonction agrégat peut-être correctement

évaluéeévaluée Pas de MAJ perduesPas de MAJ perdues

Page 38: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

38

MAJ OKMAJ OKMAJ OKMAJ OK

exec sql set transaction exec sql set transaction read repeatableread repeatable ; ;

exec sql select bal into :bal from acc where branch = '123' ;exec sql select bal into :bal from acc where branch = '123' ;

bal = bal +5 ;bal = bal +5 ; /* lang. source/* lang. source

exec sql update acc set bal = :bal where branch = '123' ;exec sql update acc set bal = :bal where branch = '123' ;

exec sql commit work ;exec sql commit work ;

Pourquoi ? Pourquoi ?

Page 39: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

39

Read RepeatableRead Repeatable(problème)(problème)

Read RepeatableRead Repeatable(problème)(problème)

Une insertion durant l'évaluation d'une fonction agrégat Une insertion durant l'évaluation d'une fonction agrégat F F est possibleest possible

– le tuple correspondant n'est pas verrouilléle tuple correspondant n'est pas verrouillé

– une deuxième évaluation de une deuxième évaluation de F dans une même transaction F dans une même transaction peut peut donner un résultat différent donner un résultat différent

Ces exécutions seraient non-sérialisablesCes exécutions seraient non-sérialisables– Pourquoi ?Pourquoi ?

Considère que chaque transaction doit lire un tuple avec Considère que chaque transaction doit lire un tuple avec bal_totbal_tot fait par fait par une autre transaction et signaler si une autre transaction et signaler si bal_totalbal_total n'est pas le résultat de n'est pas le résultat de FF

– alors on pourrait avoir une fausse alerte alors on pourrait avoir une fausse alerte

– Pourquoi ?Pourquoi ?

Page 40: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

40

SerializableSerializableSerializableSerializable

exec sql set transaction exec sql set transaction serializableserializable on utilise des on utilise des verrous prédicatifsverrous prédicatifs

» predicate lockpredicate lock

– un tel verrou s'applique à tous les tuples un tel verrou s'applique à tous les tuples concernés par une requêteconcernés par une requête

» même ceux non-existant encoremême ceux non-existant encore

l'anomalie de bal_tot devient impossiblel'anomalie de bal_tot devient impossible– on violerait le verrous prédicatifson violerait le verrous prédicatifs

on obtient la sérialisation dans tous les cason obtient la sérialisation dans tous les cas

Page 41: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

41

Predicate locks / Tuple lock Predicate locks / Tuple lock Predicate locks / Tuple lock Predicate locks / Tuple lock

Le predicattuples

verrouillées

Page 42: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

42

Predicate locks / Tuple lock Predicate locks / Tuple lock Predicate locks / Tuple lock Predicate locks / Tuple lock

Le predicattuples

verrouillées

Page 43: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

43

Predicate locks / Tuple lock Predicate locks / Tuple lock Predicate locks / Tuple lock Predicate locks / Tuple lock

Le verroupredicatif

Page 44: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

44

Predicate locks / Tuple lock Predicate locks / Tuple lock Predicate locks / Tuple lock Predicate locks / Tuple lock

Le verroupredicatif

Page 45: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

45

SerializableSerializableSerializableSerializable

Les SGBD actuels n'offrent pas de verrous Les SGBD actuels n'offrent pas de verrous prédicatifsprédicatifs– SQL-3 est en avanceSQL-3 est en avance

On peut néanmoins verrouiller toute la tableOn peut néanmoins verrouiller toute la table Le cas d'anomalie citée est fort rare en Le cas d'anomalie citée est fort rare en

pratiquepratique

Page 46: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

46

Concurrence sous MsAccessConcurrence sous MsAccessConcurrence sous MsAccessConcurrence sous MsAccess Conçue pour les transactions longues (interactives)Conçue pour les transactions longues (interactives) Trois modes d'accès : positionnement, édit, MAJTrois modes d'accès : positionnement, édit, MAJ

– ces deux dernières sont symb. par le crayonces deux dernières sont symb. par le crayon On utilise des loquets et des verrous (et estampilles)On utilise des loquets et des verrous (et estampilles)

– partagés et exclusifspartagés et exclusifs

Trois granularités Trois granularités – page (n * 2048 octets)page (n * 2048 octets)– tabletable– basebase

NotificationsNotifications– d'une MAJ concurrente faited'une MAJ concurrente faite– d'un verrou en écriture en coursd'un verrou en écriture en cours

Pas d'attentes, mais des relances Pas d'attentes, mais des relances RafraîchissementsRafraîchissements

Page 47: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

47

MsAccessMsAccessMsAccessMsAccess Mode pessimiste (Edited Records)Mode pessimiste (Edited Records)

– Le positionnement sur un tuple (la lecture) crée un verrous LLe positionnement sur un tuple (la lecture) crée un verrous Lrr de la de la pagepage

– La demande d'édition signifie une demande d'un verrou LLa demande d'édition signifie une demande d'un verrou Lww sur la sur la pagepage

– obtenu, sauf si un autre Lobtenu, sauf si un autre Lww est en cours est en cours» alors il y a une notification (err. 3260 sous Access B.)alors il y a une notification (err. 3260 sous Access B.)» et, si on veut, jusqu'à 10 re-essais automatiqueset, si on veut, jusqu'à 10 re-essais automatiques

– "Retry Interval" est réglable entre 0 - 1000 msec"Retry Interval" est réglable entre 0 - 1000 msec– défaut = 250 msec (les options multiusager)défaut = 250 msec (les options multiusager)

– si la page a été modifiée depuis Lsi la page a été modifiée depuis Lr r

» il y a une notification (err. 3197 sous Access B.)il y a une notification (err. 3197 sous Access B.)» on peut écraser la MAJ de l'autre, si on veut !on peut écraser la MAJ de l'autre, si on veut !

Page 48: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

48

MsAccess : mode optimisteMsAccess : mode optimisteMsAccess : mode optimisteMsAccess : mode optimiste Correspond au choix "No locks" dans les propriétés d'une Correspond au choix "No locks" dans les propriétés d'une

forme ou les optionsforme ou les options L'édition correspond à LL'édition correspond à Lrr seulement seulement

– donc plusieurs usagers peuvent éditer la même page et tupledonc plusieurs usagers peuvent éditer la même page et tuple la page est verrouillée en écriture seulement pour la MAJ la page est verrouillée en écriture seulement pour la MAJ

(durant la "update method"), par un (durant la "update method"), par un loquetloquet Si un conflit alorsSi un conflit alors

– la notification et les re-essais comme pour la méthode pessimiste la notification et les re-essais comme pour la méthode pessimiste (err. 3186 sous Access B.)(err. 3186 sous Access B.)

Si la page a été modifiée depuis LSi la page a été modifiée depuis Lrr par une autre transaction par une autre transaction– alors la notification d'une MAJ concurrentealors la notification d'une MAJ concurrente

Page 49: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

49

MsAccess :MsAccess : LLww d'une tabled'une tableMsAccess :MsAccess : LLww d'une tabled'une table

Mode "All records"Mode "All records" A utiliser prudemmentA utiliser prudemment L'accès est L'accès est refusérefusé si une autre transaction a si une autre transaction a

un Lun Lww même sur une page de la table même sur une page de la table– cas fort probable car les insertions ne se font cas fort probable car les insertions ne se font

que dans la que dans la dernièredernière page (Access 2) page (Access 2)

Page 50: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

50

Concurrence sous MsAcces Concurrence sous MsAcces Propriétés globales et particularitésPropriétés globales et particularitésConcurrence sous MsAcces Concurrence sous MsAcces Propriétés globales et particularitésPropriétés globales et particularités

Les requêtes ne tiennent pas compte de données non-Les requêtes ne tiennent pas compte de données non-commises (en édition)commises (en édition)

Les requêtes en lecture ne tiiennent pas compte de LLes requêtes en lecture ne tiiennent pas compte de Lww (posés (posés par d'autres transactions)par d'autres transactions)– particularité de MsAccess / SQL standardparticularité de MsAccess / SQL standard

2-PL doit être généré par l'usager2-PL doit être généré par l'usager– en Access Basicen Access Basic

Fantômes peuvent se créer Verrou mortel peut arriverVerrou mortel peut arriver

– mais pas dans les applications simplesmais pas dans les applications simples» l'accès à un tuple à la fois par une forme typiquel'accès à un tuple à la fois par une forme typique

Page 51: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

51

Concurrence sous MsAcces Concurrence sous MsAcces Propriétés globales et particularitésPropriétés globales et particularités

Concurrence sous MsAcces Concurrence sous MsAcces Propriétés globales et particularitésPropriétés globales et particularités

Il ya une possibilité de Il ya une possibilité de rafraîchissementrafraîchissement d'une forme ouverte à la d'une forme ouverte à la suite d'une MAJ concurrente suite d'une MAJ concurrente (donc ouvrez l'oeil !)(donc ouvrez l'oeil !)– toutes les 1 : 32 766 sec, défaut 60 sec toutes les 1 : 32 766 sec, défaut 60 sec

» voir les options multiusagervoir les options multiusager Les paramètres de gestion de la concurrence sont ceuxLes paramètres de gestion de la concurrence sont ceux

– par défaut ceux des optionspar défaut ceux des options– sauf si on a déclare un choix différentsauf si on a déclare un choix différent

» dans les propriétés d'une forme ou dans le programme Access Basicdans les propriétés d'une forme ou dans le programme Access Basic L'approche MsAccess mélange au niveau physique les verrous et les L'approche MsAccess mélange au niveau physique les verrous et les

estampilles estampilles – logiques ou peut-être physiques (voir plus loin)logiques ou peut-être physiques (voir plus loin)

Il y a une confusion regrettable de la terminologie de deux approches Il y a une confusion regrettable de la terminologie de deux approches

– les modes "optimiste" et "pessimiste"les modes "optimiste" et "pessimiste"

Page 52: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

52

MsAccessMsAccessConcurrence monousagerConcurrence monousager

MsAccessMsAccessConcurrence monousagerConcurrence monousager

Mode pessimisteMode pessimiste– même si l'on choisit "No Locks'"même si l'on choisit "No Locks'"

» donc pas de mode optimiste donc pas de mode optimiste – sans avertissementsans avertissement

Mode exclusif (All Records) possibleMode exclusif (All Records) possible– Aussi bien entre les formes qu'entre les tables et Aussi bien entre les formes qu'entre les tables et

entre les formes et les tablesentre les formes et les tables Les requêtes ne tiennent pas compte de Les requêtes ne tiennent pas compte de

données en éditiondonnées en édition

Page 53: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

53

Autres paradigmes pour gérer la Autres paradigmes pour gérer la concurrenceconcurrence

Autres paradigmes pour gérer la Autres paradigmes pour gérer la concurrenceconcurrence

Estampilles (timestamps)Estampilles (timestamps)

– toute transaction est estampillée avec son temps toute transaction est estampillée avec son temps t t de de commencementcommencement

» temps logique ou physiquetemps logique ou physique

– en principe, plus petit en principe, plus petit t t gagne s'il y a un conflitgagne s'il y a un conflit» l'autre transaction est avortée et relancéel'autre transaction est avortée et relancée

– peut-être indéfiniment (peut-être indéfiniment (livelocklivelock)) Avantages/désavantagesAvantages/désavantages

– pas d'interblocage (deadlock)pas d'interblocage (deadlock)

– performances en général moins bonnes que pour le performances en général moins bonnes que pour le verrouillageverrouillage

Page 54: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

54

Autres paradigmes pour gérer la Autres paradigmes pour gérer la concurrenceconcurrence

Autres paradigmes pour gérer la Autres paradigmes pour gérer la concurrenceconcurrence

Deux approchesDeux approches

– optimiste (meilleure quand peu d'écritures)optimiste (meilleure quand peu d'écritures)

» vérif. de conflits a posteriori à la fin de la vérif. de conflits a posteriori à la fin de la transactiontransaction

– phase de certificationphase de certification

» si l'exec. incorrecte, alors l'une ou les deux si l'exec. incorrecte, alors l'une ou les deux transactions sont avortéestransactions sont avortées

– pessimistepessimiste

» les conflits sont vérifiés tout de suiteles conflits sont vérifiés tout de suite

» les avortements sont faits aussitôtles avortements sont faits aussitôt

Page 55: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

55

2

2(b)

1(a)

1

1(b)

C

5

5(b)

C

...

Sch. Pessimiste

Page 56: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

56

2

2(b)

1(a)

1

1(b)

C

5

5(b)

C

...

1(a)

1

1(b)

2

2(b)

...AA

4(a)

4(b)

C

4

7

7(b)

C

...

Sch. Pessimiste Sch. Optimiste

Page 57: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

57

Dates de valeurDates de valeurDates de valeurDates de valeur Toute transaction Toute transaction T T est estampillée avec son temps-est estampillée avec son temps-

fin fin VV (date de valeur)(date de valeur) prévu prévu– en principe, le plus petit en principe, le plus petit V V gagne le conflitgagne le conflit

» l'autre transaction l'autre transaction T' T' est avortée et relancée ou est avortée et relancée ou mise en attentemise en attente

– selon le temps de conflit / à selon le temps de conflit / à V'V' Pas de dead-lock (Pas de dead-lock (pourquoi ?)pourquoi ?) Potentiellement + efficace que estampillesPotentiellement + efficace que estampilles

ApplicationsApplications– temps-réel (transactions avec deadlines)temps-réel (transactions avec deadlines)– systèmes multibasessystèmes multibases

» commit implicitecommit implicite

Page 58: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

58

6 (a)

V = 6

Dates de valeurDates de valeurDates de valeurDates de valeur

Page 59: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

59

V = 8

8 (b)

6 (a)

V = 6

6 (b)A

Dates de valeurDates de valeurDates de valeurDates de valeur

Page 60: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

60

V = 8

8 (b)

6 (a)

V = 6

6 (b)

C

V = 16

16 (b)

C

...

Relance

A

Dates de valeurDates de valeurDates de valeurDates de valeur

Page 61: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

61

6 (a)

V = 6

Dates de valeurDates de valeurDates de valeurDates de valeur

Page 62: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

62

6 (a)

V = 6

6 (b)

V = 13

13 (b)

... W

Dates de valeurDates de valeurDates de valeurDates de valeur

Attente

Page 63: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

63

6 (a)

V = 6

6 (b)

V = 13

13 (b)

...C

W

Dates de valeurDates de valeurDates de valeurDates de valeur

C

Attente

Page 64: 1 TransactionsTransactions Witold Litwin. 2 IntroductionIntroduction n Beaucoup d'opérations sur une BD doivent être atomiques: n Transfert d'argent entre

64

COMMIT ?COMMIT ?COMMIT ?COMMIT ?