• Aucun résultat trouvé

Transparents (PowerPoint)

N/A
N/A
Protected

Academic year: 2022

Partager "Transparents (PowerPoint)"

Copied!
113
0
0

Texte intégral

(1)

27/02/22 © Robert Godin. Tous droits réservés. 1

14 L'intégrité et la gestion des transactions

 1. Intégrité sémantique

respect des contraintes d’intégrité

 2. Fiabilité (sûreté)

fautes (pannes) matérielles ou logicielles

 3. Contrôle de concurrence

concurrence sans interférence indésirable

 4. Sécurité (confidentialité)

accès autorisés

(2)

27/02/22 © Robert Godin. Tous droits réservés. 2

14.1 Concept de transaction

Transaction

séquence d'opérations exécutées par un programme

opérations pour délimiter

début de transaction (implicite en SQL)

fin de transaction

confirmer (COMMIT WORK en SQL)

annuler (ROLLBACK WORK en SQL) –

propriétés ACID (DACIL)

(3)

27/02/22 © Robert Godin. Tous droits réservés. 3

Pseudo-code d'une transaction de transfert bancaire

DébutTransaction ;

Lire( SoldeCompte 1 , s 1 );

s 1 := s 1 -100;

Écrire ( s 1 , SoldeCompte 1 );

SI s 1 < 0

AnnulerTransaction;

SINON

Lire ( SoldeCompte 2 , s 2 );

s 2 := s 2 +100;

Écrire( s 2 , SoldeCompte 2 );

ConfirmerTransaction;

FINSI;

(4)

27/02/22 © Robert Godin. Tous droits réservés. 4

14.2 Propriétés d'une transaction (ACID)

A tomicité (atomicity)

– tout ou rien

Opération État de la mémoire

centrale État de la BD

DébutTransaction SoldeCompte

1

= $300 SoldeCompte

2

= $500 Lire ( SoldeCompte

1

, s

1

) s

1

=300

s

1

:= s

1

-100 s

1

=200

Écrire ( s

1

, SoldeCompte

1

) SoldeCompte

1

= $200 SoldeCompte

2

= $500

Interruption Zut!

Scénario de transfert interrompu

(5)

27/02/22 © Robert Godin. Tous droits réservés. 5

C onsistance

(consistency) ou cohérence

 Laisse la BD dans un état cohérent

 Déférer la vérification d ’une contrainte ?

Etat cohérent

Etat

cohérent

Transaction

(6)

27/02/22 © Robert Godin. Tous droits réservés. 6

Isolation

 Sérialisabilité

Exemple de perte de mise à jour (lost update)

Temps Transaction T

1

Transaction T

2

État de la BD

t

1

DébutTransaction SoldeCompte = 1000

t

2

Lire ( SoldeCompte , s )

t

3

DébutTransaction

t

4

Lire ( SoldeCompte , s )

t

5

s = s + 700

t

6

Écrire ( s , SoldeCompte ) SoldeCompte = 1700 t

7

ConfirmerTransaction

t

8

s = s + 200

t

9

Écrire ( s , SoldeCompte ) SoldeCompte = 1200

t

10

ConfirmerTransaction Saperlipopette!

(7)

27/02/22 © Robert Godin. Tous droits réservés. 7

Exemple de lecture impropre (dirty read) : cas de sommaire inconsistant

Temps Transaction T1 Transaction T2 État de la BD Environnement

t1 DébutTransaction SoldeCompte1 = $300

SoldeCompte2 = $500 t2 Lire(SoldeCompte1, s1)

t3 s1:= s1-100

t4 Écrire(s1,SoldeCompte1) SoldeCompte1 = $200 SoldeCompte2 = $500

t5 DébutTransaction

t6 Lire(SoldeCompte1, s1) t7 Lire(SoldeCompte2, s2)

t8 total = s1 + s2

t9 Afficher(s1, s2, total) Affiche $200, $500,

$700Oups!

t10 ConfirmerTransaction

t11 Lire(SoldeCompte2, s2) t12 s2:= s2+100

t12 Écrire(s2,SoldeCompte2) SoldeCompte1 = $200 SoldeCompte2 = $600 t14 ConfirmerTransaction

Lecture impropre : lecture d ’une donnée « non confirmée »

(8)

27/02/22 © Robert Godin. Tous droits réservés. 8

Propriétés ACID (suite)

D urabilité (durability)

– effets d ’une transaction confirmée doivent durer malgré pannes

L égalité

– respecter les privilèges

(9)

27/02/22 © Robert Godin. Tous droits réservés. 9

14.3 État d'une transaction

DébutTransaction

identificateur unique + informations

état actif

consommation de ressource (verrouillages, journal, …)

choisir le niveau d ’isolation approprié

ConfirmerTransaction

état confirmé

point de confirmation

enregistrement persistant (journal)

libération de ressources

confirmer le plus tôt possible pour éviter de monopoliser les ressources

AnnulerTransaction ou interruption suite à une erreur (faute)

état annulé

effets doivent être « défaits »

Fin = confirmé ou annulé

Active

DébutTransaction

Terminée (fin) Confirmée

Annulée Confirmée

Annulée ConfirmerTransaction (Commit)

AnnulerTransaction (Rollback)

Interruption

(10)

27/02/22 © Robert Godin. Tous droits réservés. 10

Exemples de fautes

 Erreur locale à une transaction

 Annulation par le SGBD (par exemple suite à la détection d'un interblocage)

 Erreur du SGBD

 Erreur du système d'exploitation

 Panne de matériel

 etc.

(11)

27/02/22 © Robert Godin. Tous droits réservés. 11

14.4Architecture générale pour la gestion des transactions

G e s t i o n n a i r e d e t r a n s a c t i o n T r a n s a c t i o n s

(L ir e , E c r i r e , D é b u t T r a n s a c t io n , C o n f ir m e r T r a n s a c t i o n , A n n u l e r T r a n s a c t i o n)

G e s t i o n n a i r e d e l 'o r d o n n a n c e m e n t

G e s t i o n n a i r e d e r é c u p é r a t i o n

G e s t i o n n a i r e d e

l 'a n t é - m é m o i r e T a m p o n s

G e s t i o n n a i r e d e d o n n é e s

B D e t jo u r n a l

(12)

27/02/22 © Robert Godin. Tous droits réservés. 12

14.5 Contrôle de concurrence

 Méthode de contrôle de concurrence

– assurer isolation

– transactions concurrentes

Ordonnancement, histoire, ou exécution (schedule, history, log)

– un scénario particulier d'exécution

– ex :

Temps Transaction T1 Transaction T2 État de la BD

t1 DébutTransaction SoldeCompte = 1000

t2 Lire(SoldeCompte, s)

t3 DébutTransaction

t4 Lire(SoldeCompte, s)

t5 s = s + 700

t6 Écrire(s,SoldeCompte) SoldeCompte = 1700 t7 ConfirmerTransaction

t8 s = s + 200

t9 Écrire(s,SoldeCompte) SoldeCompte = 1200

t10 ConfirmerTransaction Saperlipopette!

(13)

27/02/22 © Robert Godin. Tous droits réservés. 13

Ordonnancement séquentiel (serial schedule)

 L’une après l’autre

Temps Transaction T

1

Transaction T

2

État de la BD

t

1

DébutTransaction SoldeCompte = 1000

t

2

Lire ( SoldeCompte , s ) t

3

s = s + 700

t

4

Écrire ( s , SoldeCompte ) SoldeCompte = 1700 t

5

ConfirmerTransaction

t

6

DébutTransaction

t

7

Lire ( SoldeCompte , s )

t

8

s = s + 200

t

9

Écrire ( s , SoldeCompte ) SoldeCompte = 1900

t

10

ConfirmerTransaction

(14)

27/02/22 © Robert Godin. Tous droits réservés. 14

Ordonnancement sérialisable (serializable)

 Equivalent à un ordonnancement séquentiel (lequel ?)

Temps Transaction T1 Transaction T2 État de la BD Environnement

t1 DébutTransaction SoldeCompte1 = $300

SoldeCompte2 = $500 t2 Lire(SoldeCompte1, s1)

t3 s1:= s1-100

t4 DébutTransaction

t5 Lire(SoldeCompte1, s1)

t6 Lire(SoldeCompte2, s2)

t7 total = s1 + s2

t8 Afficher (s1, s2, total) Affiche $300, $500,

$800

t9 ConfirmerTransaction

t10 Écrire(s1,SoldeCompte1) SoldeCompte1 = $200 SoldeCompte2 = $500 t11 Lire(SoldeCompte2, s2)

t12 s2:= s2+100

t13 Écrire(s2,SoldeCompte2) SoldeCompte1 = $200 SoldeCompte2 = $600 t14 ConfirmerTransaction

(15)

27/02/22 © Robert Godin. Tous droits réservés. 15

Exemple de perte de mise à jour est non sérialisable

 Pas équivalent ni à T 1 , T 2 ou T 2 , T 1

– solde : $1900

Temps Transaction T

1

Transaction T

2

État de la BD

t

1

DébutTransaction SoldeCompte = 1000

t

2

Lire ( SoldeCompte , s )

t

3

DébutTransaction

t

4

Lire ( SoldeCompte , s )

t

5

s = s + 700

t

6

Écrire ( s , SoldeCompte ) SoldeCompte = 1700 t

7

ConfirmerTransaction

t

8

s = s + 200

t

9

Écrire ( s , SoldeCompte ) SoldeCompte = 1200

t

10

ConfirmerTransaction Saperlipopette!

(16)

27/02/22 © Robert Godin. Tous droits réservés. 16

14.5.1Enjeux du contrôle de concurrence

 Solution bestiale

– interdire les ordonnancements concurrents

mécanisme de section critique

– une transaction longue bloque toutes les autres…

 Objectif

– permettre ordonnancements concurrents

– gérer les accès concurrents aux mêmes

données

(17)

27/02/22 © Robert Godin. Tous droits réservés. 17

14.5.2Sérialisabilité par permutation

 Sérialisabilité difficile à vérifier en pratique

 Exemple : ordonnancement chanceux !

Temps Transaction T

1

Transaction T

2

État de la BD

t

1

DébutTransaction A = 1

t

2

Lire ( A, a ) t

3

a := a

2

t

4

DébutTransaction

t

5

Lire ( A, a )

t

6

Écrire ( a , A) A = 1

t

7

a := a + 10

t

8

Écrire ( a , A) A = 11

t

9

ConfirmerTransaction

t

10

ConfirmerTransaction

(18)

27/02/22 © Robert Godin. Tous droits réservés. 18

Sérialisabilité par permutation

 Éviter de considérer les calculs

 Uniquement les lectures/écritures BD

Opérations non permutables (conflicting)

– Deux opérations de lecture ou d'écriture

dans deux transactions différentes sont

non permutables si elles portent sur la

même donnée et au moins une des deux est

une écriture

(19)

27/02/22 © Robert Godin. Tous droits réservés. 19

Sérialisablilité par permutation

Ordonnancement sérialisable par permutation (conflict serializable schedule)

– opérations non permutables sont

effectuées dans le même ordre relatif

que dans un ordonnancement

séquentiel

(20)

27/02/22 © Robert Godin. Tous droits réservés. 20

Sérialisable par permutation : flèches dans la même direction

Temps Transaction T1 Transaction T2 État de la BD Environnement

t1 DébutTransaction SoldeCompte1 = $300

SoldeCompte2 = $500 t2 Lire(SoldeCompte1, s1)

t3 s1:= s1-100

t4 DébutTransaction

t5 Lire(SoldeCompte1, s1)

t6 Lire(SoldeCompte2, s2)

t7 total = s1 + s2

t8 Afficher (s1, s2, total) Affiche $300, $500,

$800

t9 ConfirmerTransaction

t10 Écrire(s1,SoldeCompte1) SoldeCompte1 = $200 SoldeCompte2 = $500 t11 Lire(SoldeCompte2, s2)

t12 s2:= s2+100

t13 Écrire(s2,SoldeCompte2) SoldeCompte1 = $200 SoldeCompte2 = $600 t14 ConfirmerTransaction

(21)

27/02/22 © Robert Godin. Tous droits réservés. 21

Proposition

 Sérialisable par permutation  sérialisable

 Pas l ’inverse

(22)

27/02/22 © Robert Godin. Tous droits réservés. 22

Sommaire inconsistant : non

sérialisable par permutation

Temps Transaction T1 Transaction T2 État de la BD Environnement

t1 DébutTransaction SoldeCompte1 = $300

SoldeCompte2 = $500 t2 Lire(SoldeCompte1, s1)

t3 s1:= s1-100

t4 Écrire(s1,SoldeCompte1) SoldeCompte1 = $200 SoldeCompte2 = $500

t5 DébutTransaction

t6 Lire(SoldeCompte1, s1) t7 Lire(SoldeCompte2, s2)

t8 total = s1 + s2

t9 Afficher (s1, s2, total) Affiche $200, $500,

$700Oups!

t10 ConfirmerTransaction

t11 Lire(SoldeCompte2, s2) t12 s2:= s2+100

t12 Écrire(s2,SoldeCompte2) SoldeCompte1 = $200 SoldeCompte2 = $600 t14 ConfirmerTransaction

(23)

27/02/22 © Robert Godin. Tous droits réservés. 23

Ordonnancement chanceux

 Non sérialisable par permutation mais sérialisable

Temps Transaction T

1

Transaction T

2

État de la BD

t

1

DébutTransaction A = 1

t

2

Lire ( A, a ) t

3

a := a

2

t

4

DébutTransaction

t

5

Lire ( A , a )

t

6

Écrire ( a , A ) A = 1

t

7

a := a + 10

t

8

Écrire ( a , A) A = 11

t

9

ConfirmerTransaction

t

10

ConfirmerTransaction

(24)

27/02/22 © Robert Godin. Tous droits réservés. 24

14.5.3 Test de sérialisabilité par permutation

Graphe de préséance (precedence graph)

– un sommet pour chacune des transactions T

i

– arc T

i

 T

j

deux opérations non permutables de T

i

et T

j

opération de T

i

précède l'opération de T

j

 Sérialisable par permutation  graphe sans cycle

tri topologique produit ordre séquentiel équivalent

(25)

27/02/22 © Robert Godin. Tous droits réservés. 25

Graphe de préséance sans cycle

Temps Transaction T1 Transaction T2 État de la BD Environnement

t1 DébutTransaction SoldeCompte1 = $300

SoldeCompte2 = $500 t2 Lire(SoldeCompte1, s1)

t3 s1:= s1-100

t4 DébutTransaction

t5 Lire(SoldeCompte1, s1)

t6 Lire(SoldeCompte2, s2)

t7 total = s1 + s2

t8 Afficher(s1, s2, total) Affiche $300, $500,

$800

t9 ConfirmerTransaction

t10 Écrire(s1,SoldeCompte1) SoldeCompte1 = $200 SoldeCompte2 = $500 t11 Lire(SoldeCompte2, s2)

t12 s2:= s2+100

t13 Écrire(s2,SoldeCompte2) SoldeCompte1 = $200 SoldeCompte2 = $600 t14 ConfirmerTransaction

T 1 T 2

(26)

27/02/22 © Robert Godin. Tous droits réservés. 26

Sommaire inconsistant : graphe de préséance avec cycle

Temps Transaction T1 Transaction T2 État de la BD Environnement

t1 DébutTransaction SoldeCompte1 = $300

SoldeCompte2 = $500 t2 Lire(SoldeCompte1, s1)

t3 s1:= s1-100

t4 Écrire(s1,SoldeCompte1) SoldeCompte1 = $200 SoldeCompte2 = $500

t5 DébutTransaction

t6 Lire(SoldeCompte1, s1)

t7 Lire(SoldeCompte2, s2)

t8 total = s1 + s2

t9 Afficher(s1, s2, total) Affiche $200, $500,

$700 Oups!

t10 ConfirmerTransaction

t11 Lire(SoldeCompte2, s2) t12 s2:= s2+100

t12 Écrire(s2,SoldeCompte2) SoldeCompte1 = $200 SoldeCompte2 = $600 t14 ConfirmerTransaction

T 1 T 2

(27)

27/02/22 © Robert Godin. Tous droits réservés. 27

14.5.4 Principales stratégies de contrôle de concurrence

Verrouillage (locking)

blocage temporaire des opérations non permutables

verrouillage des objets touchés

~ordre du premier conflit

Estampillage (timestamping)

~ ordre des estampilles

sinon assassinat

Estampille(T) (timestamp)

identifiant unique et ordre (horloge ou compteur)

Certification (validation)

optimiste

vérification des conflits à la fin de la transaction (assassinat )

~ ordre du décès

Multiversion

utiliser des anciennes versions

éviter blocages ou assassinats

(28)

27/02/22 © Robert Godin. Tous droits réservés. 28

14.5.5 Contrôle de concurrence par verrouillage

Modes de verrouillage

Verrouillage exclusif (X, exclusive lock)

Une transaction à la fois

En écriture

Verrouillage partagé (P, share lock (S))

En lecture

 Matrice de compatibilité

Partagé ( P ) Exclusif (X) Partagé ( P ) oui non

Exclusif ( X) non non

(29)

27/02/22 © Robert Godin. Tous droits réservés. 29

Procédure de verrouillage

Procédure Ver (B: objet,

M:mode {P ou X})

{demande de verrouillage sur B en mode M pour T}

DÉBUT (section critique)

SI (mode M est compatible avec le mode déjà accordé sur O ou si B n'est pas verrouillé ou

si la transaction possède elle-même le verrouillage) Accorder le verrouillage en mode M à la transaction SINON

Placer la transaction dans la file d'attente pour B Bloquer la transaction

FIN SI

FIN (section critique)

Table de verrouillage

verrouillages accordés et demandés

(30)

27/02/22 © Robert Godin. Tous droits réservés. 30

Procédure de déverrouillage

Procédure Dev (B: objet)

DÉBUT (section critique)

Libérer le verrouillage sur B accordé à la transaction T

Accorder le verrouillage à une ou plusieurs transactions (P) en attente sur B et enlever les transactions de la file

Débloquer les transations si possible Fin (section critique)

Politique de gestion des files d ’attentes

priorités ?

éviter famine

(31)

27/02/22 © Robert Godin. Tous droits réservés. 31

14.5.5.1 Verrouillage en deux phases

Protocole de verrouillage en deux phases (V2P, two phase locking )

Ver(B,P) ou Ver(B,X) avant Lire(B)

Ver(B,X) avant Écrire(B)

Aucun verrouillage (Ver) après un déverrouillage (Dev)

Proposition

– V2P  sérialisable par permutation

(32)

27/02/22 © Robert Godin. Tous droits réservés. 32

Exemple non V2P : cas du sommaire inconsistant

Temps Transaction T1 Transaction T2 État de la BD Environnement

t1 DébutTransaction SoldeCompte1 = $300

SoldeCompte2 = $500 t2 Ver(SoldeCompte1, P)

t3 Lire(SoldeCompte1, s1) t4 s1:= s1-100

t5 Ver(SoldeCompte1, X)

t6 Écrire(s1,SoldeCompte1) SoldeCompte1 = $200 SoldeCompte2 = $500 t7 Dev(SoldeCompte1)

t8 DébutTransaction

t9 Ver(SoldeCompte1, P)

t10 Lire(SoldeCompte1, s1)

t11 Ver(SoldeCompte2, P)

t12 Lire(SoldeCompte2, s2)

t13 total = s1 + s2

t14 Afficher(s1, s2, total) Affiche $200,

$500, $700 Oups!

t15 Dev(SoldeCompte1)

t16 Dev(SoldeCompte2)

t17 ConfirmerTransact

ion t18 Ver(SoldeCompte2, P)

t19 Lire(SoldeCompte2, s2) t20 s2:= s2+100

t21 Ver(SoldeCompte2, X)

t22 Écrire(s2,SoldeCompte2) SoldeCompte1 = $200 SoldeCompte2 = $600 t23 Dev(SoldeCompte2)

t24 ConfirmerTransacti on

(33)

27/02/22 © Robert Godin. Tous droits réservés. 33

V2P à l ’oeuvre

Temps Transaction T1 Transaction T2 État de la BD Environnement t1 DébutTransaction SoldeCompte1 = $300

SoldeCompte2 = $500 t2 Ver(SoldeCompte1, P)

t3 Lire(SoldeCompte1, s1) t4 s1:= s1-100

t5 Ver(SoldeCompte1, X)

t6 Écrire(s1,SoldeCompte1) SoldeCompte1 = $200 SoldeCompte2 = $500

t7 DébutTransaction

t8 Ver(SoldeCompte1, P) Non accordé!

t9 attente…

t10 Ver(SoldeCompte2, P) t11 Lire(SoldeCompte2, s2) t12 s2:= s2+100

t12 Ver(SoldeCompte2, X)

t14 Écrire(s2,SoldeCompte2) SoldeCompte1 = $200 SoldeCompte2 = $600 t15 Dev(SoldeCompte1)

t16 Dev(SoldeCompte2) t17 ConfirmerTransacti

t18 on Lire(SoldeCompte1, s1) Verrouillage accordé

t19 Ver(SoldeCompte2, P)

t20 Lire(SoldeCompte2, s2)

t21 total = s1 + s2

t22 Afficher(s1, s2, total) Affiche $200,

$600, $800

t23 Dev(SoldeCompte1)

t24 Dev(SoldeCompte2)

t25 ConfirmerTransact

ion

(34)

27/02/22 © Robert Godin. Tous droits réservés. 34

14.5.5.2 Problèmes dus aux annulations

 Interactions

– mécanismes de récupérations

– contrôle de concurrence

 Annulation par « défaire »

– écritures pour annuler effets

(35)

27/02/22 © Robert Godin. Tous droits réservés. 35

Annulation en cascade

Annuler T

1

 Annuler T

2

en cascade

Temps Transaction T

1

Transaction T

2

État de la BD

t

1

DébutTransaction SoldeCompte = 1000

t

2

Lire ( SoldeCompte , s ) t

3

s = s + 700

t

4

Écrire ( s , SoldeCompte ) SoldeCompte = 1700

t

5

DébutTransaction

t

6

Lire ( SoldeCompte , s )

t

7

s = s + 200

t

8

Écrire ( s , SoldeCompte ) SoldeCompte = 1900 t

9

Interruption!

 Cause : lecture impropre

(36)

27/02/22 © Robert Godin. Tous droits réservés. 36

14.5.5.3 Verrouillage strict et rigoureux en deux phases

Verrouillage en deux phases strict (strict two phase locking)

déverrouillages des X après la fin

Verouillage en deux phases rigoureux (rigourous two phase locking)

tous les déverrouillages après la fin

Proposition

V2P strict  empêche lecture impropre (annulations en cascade)

Corollaire : V2P rigoureux  empêche lecture impropre

(37)

27/02/22 © Robert Godin. Tous droits réservés. 37

14.5.5.4 Récupérabilité

Temps Transaction T

1

Transaction T

2

État de la BD

t

1

DébutTransaction SoldeCompte = 1000

t

2

Lire ( SoldeCompte , s ) t

3

s = s + 700

t

4

Écrire ( s , SoldeCompte ) SoldeCompte = 1700

t

5

DébutTransaction

t

6

Lire ( SoldeCompte , s )

t

7

s = s + 200

t

8

Écrire ( s , SoldeCompte ) SoldeCompte = 1900

t

9

ConfirmerTransaction

t

10

Interruption!

Non récupérable

Annuler T

1

 Annuler T

2

en cascade

T

2

est confirmée !

(38)

27/02/22 © Robert Godin. Tous droits réservés. 38

Ordonnancement

récupérable (recoverable schedule)

 si T

1

lit de T

2

confirmation de T

1

après confirmation de T

2

Proposition

Empêche lecture impropre  récupérable

( lecture T

1

après confirmation T

2

 confirmation T

1

après confirmation T

2

)

Conséquence

V2P strict (ou rigoureux)  récupérable

(39)

27/02/22 © Robert Godin. Tous droits réservés. 39

5.5.5.5 Approche agressive ou conservatrice de verrouillage

 Procotole conservateur

– verrouillage en vrac au tout début

 Protocole agressif

– verrouillage le plus tard possible

 plus de concurrence

 plus d ’interblocages

(40)

27/02/22 © Robert Godin. Tous droits réservés. 40

14.5.5.6 Interblocage

Temps Transaction T

1

Transaction T

2

État de la BD

t

1

DébutTransaction SoldeCompte = 1000

t

2

Ver ( SoldeCompte , P ) t

3

Lire ( SoldeCompte , s )

t

4

DébutTransaction

t

5

Ver ( SoldeCompte , P )

t

6

Lire ( SoldeCompte , s )

t

7

s = s + 700

t

8

Ver ( SoldeCompte , X)

t

9

attente… s = s + 200

t

10

Ver ( SoldeCompte , X)

attente…

(41)

27/02/22 © Robert Godin. Tous droits réservés. 41

14.5.5.6.1Détection d'interblocage

Graphe qui attend quoi (QAQ, wait-for graph)

T

i

 T

j

si T

i

attend pour verrouillage détenu par T

j

Proposition

– interblocage  cycle dans QAQ

 Choix d ’une victime

 Mieux que prévention si peu

d ’interblocages

(42)

27/02/22 © Robert Godin. Tous droits réservés. 42

14.5.5.6.2 Détection par temps limite

 Si trop de temps en attente

– annuler la transaction

 Annulations parfois inutiles

 Problème avec longues

transactions

(43)

27/02/22 © Robert Godin. Tous droits réservés. 43

14.5.5.6.3 Prévention d'interblocage

 1. Attente ou mort (« wait-die »)

Si T

i

demande un verrouillage accordé à T

j

et T

i

est plus vieille (Estampille(T

i

) < Estampille(T

j

),

alors T

i

peut attendre

sinon elle est annulée

les jeunes ne peuvent attendre les vieux

 2. Assassinat ou attente (« wound-wait »)

Si T

i

demande un verrouillage accordé à T

j

et T

i

est plus jeune (Estampille(T

i

) > Estampille(T

j

),

alors T

i

peut attendre

sinon T

j

est annulée

les jeunes ne peuvent bloquer les vieux

(44)

27/02/22 © Robert Godin. Tous droits réservés. 44

Prévention (suite)

Protocole conservateur

– demandes de verrouillages en vrac au début de la transaction

– cas particulier : verrouillage hiérarchique

Ordre pré-défini

– demandes selon un ordre pré-défini

sur les objets

(45)

27/02/22 © Robert Godin. Tous droits réservés. 45

14.5.5.7 Verrouillage hiérarchique

 T 1

 T 2

LOCK TABLE Compte IN SHARE MODE SELECT SUM(solde)

FROM Compte

SELECT solde INTO : s

1

FROM Compte

WHERE noCompte = 1 FOR UPDATE

Temps Transaction T

1

Transaction T

2

État de la BD t

1

DébutTransaction

t

2

Ver ( table Compte , P )

t

3

DébutTransaction

t

4

Ver ( SoldeCompte

1

, X) Non accordé?

(46)

27/02/22 © Robert Godin. Tous droits réservés. 46

Verrouillage d'intention (intent locking)

 Intention de verrouiller un composant

Temps Transaction T

1

Transaction T

2

État de la BD t

1

DébutTransaction

t

2

Ver ( table Compte , P )

t

3

DébutTransaction

t

4

Ver ( table Compte , IX) Non accordé

(47)

27/02/22 © Robert Godin. Tous droits réservés. 47

Exemple de hiérarchie

B D

F i c h i e r

1

F i c h i e r

2

F i c h i e r

n

T a b l e

1

T a b l e

2

T a b l e

m

L i g n e

1

L i g n e

2

L i g n e

k

(48)

27/02/22 © Robert Godin. Tous droits réservés. 48

Modes de verrouillage hiérarchique

 Matrice de compatibilité

Ver ( B , IP ) signifie une intention de verrouiller certains descendants de B en mode P Ver ( B , IX) signifie une intention de verrouiller certains descendants de B en mode X Ver ( B , P ) verrouillage de B en mode P

Ver ( B , PIX) verrouillage de B en mode P et en mode IX Ver ( B , X) verrouillage de B en mode X

Acquis IP IX P PIX X

IP oui oui oui oui non

IX oui oui non non non

P oui non oui non non

PIX oui non non non non

X non non non non non

(49)

27/02/22 © Robert Godin. Tous droits réservés. 49

Protocole de verrouillage

hiérarchique en deux phases (VH2P, hierarchical two phase locking).

1. Verrouiller parent en mode d'intention avant enfant :

Ver(parent de B, IX) avant Ver(B, X) ou Ver(B, IX)

Ver(parent de B, IX ou IP) avant Ver(B, P) ou Ver(B, IP)

2. Ver(B, P) ou Ver(B, X) avant Lire(B) ou Lire(un descendant de B)

3. Ver(B, X) avant Écrire(B) ou Écrire (un descendant de B)

4. Aucun verrouillage (Ver) après un déverrouillage

(Dev)

(50)

27/02/22 © Robert Godin. Tous droits réservés. 50

14.5.6 Contrôle de concurrence par estampillage

Principe

si O

1

et O

2

non permutables

opérations exécutées dans l'ordre correspondant aux estampilles des transactions

sinon zigouiller requérant

Information à maintenir par SGBD

Estampille-L(B): Estampille maximale des transactions ayant lu B

Estampille-E(B): Estampille maximale des transactions ayant écrit B

seulement les plus récentes

(51)

27/02/22 © Robert Godin. Tous droits réservés. 51

Exemple qui respecte le protocole

Temps Transaction T1 Transaction T2 État de la BD Environnement

t1 DébutTransaction SoldeCompte1 = $300

SoldeCompte2 = $500

t2 Lire(SoldeCompte1, s1)

t3 DébutTransaction t4 Lire(SoldeCompte1, s1) t5 s1:= s1-100

t6 Écrire(s1,SoldeCompte1) SoldeCompte1 = $200 SoldeCompte2 = $500

t7 Lire(SoldeCompte2, s2)

t8 total = s1 + s2

t9 Afficher (s1, s2, total) Affiche $300, $500,

$800

t10 ConfirmerTransaction

t11 Lire(SoldeCompte2, s2) t12 s2:= s2+100

t12 Écrire(s2,SoldeCompte2) SoldeCompte1 = $200 SoldeCompte2 = $600 t14 ConfirmerTransaction

- OK :

Estampille(T2) <

Estampille(T1) - V2P?

(52)

27/02/22 © Robert Godin. Tous droits réservés. 52

Lecture rejetée

Temps Transaction T

1

Transaction T

2

État de la BD

t

1

DébutTransaction SoldeCompte

1

= $300

SoldeCompte

2

= $500 t

2

Lire ( SoldeCompte

1

, s

1

)

t

3

DébutTransaction t

4

Lire ( SoldeCompte

1

, s

1

) t

5

s

1

:= s

1

-100

t

6

Écrire ( s

1

, SoldeCompte

1

) SoldeCompte

1

= $200 SoldeCompte

2

= $500 t

7

Lire ( SoldeCompte

2

, s

2

)

t

8

s

2

:= s

2

+100

t

9

Écrire ( s

2

, SoldeCompte

2

) SoldeCompte

1

= $200 SoldeCompte

2

= $600 t

10

ConfirmerTransaction

t

11

Lire ( SoldeCompte

2

, s

2

) Annulation de T

2 E s t a m p il l e - E (S o l d e C o m p t e 2)

E s t a m p il l e (T 2)

T e m p s

(53)

27/02/22 © Robert Godin. Tous droits réservés. 53

Protocole de contrôle de concurrence par estampillage :

demande de lecture

Lire(B, ...) par T

– accepter : Estampille-L(B) :=

Max(Estampille(T), Estampille-L(B)) E s t a m p il l e - E ( B ) E s t a m p il l e ( T )

T e m p s

E s t a m p il l e - E ( B ) E s t a m p il l e ( T )

T e m p s

(54)

27/02/22 © Robert Godin. Tous droits réservés. 54

Protocole de contrôle de concurrence par estampillage :

demande d ’écriture

Écrire(…, B) par T

– sinon accepter : Estampille-E(B) :=

Estampille(T)

E s t a m p il l e - E ( B ) E s t a m p il l e ( T ) E s t a m p il l e - L ( B )

T e m p s

E s t a m p il l e - E ( B ) E s t a m p il l e - L ( B ) E s t a m p il l e ( T )

T e m p s

(55)

27/02/22 © Robert Godin. Tous droits réservés. 55

Sérialiable mais pas toujours récupérable

Temps Transaction T1 Transaction T2 État de la BD Environnement

t1 DébutTransaction SoldeCompte1 = $300

SoldeCompte2 = $500 t2 Lire(SoldeCompte1, s1)

t3 s1:= s1-100

t4 Écrire(s1,SoldeCompte1) SoldeCompte1 = $200 SoldeCompte2 = $500

t5 DébutTransaction

t6 Lire(SoldeCompte1, s1)

t7 Lire(SoldeCompte2, s2)

t8 total = s1 + s2

t9 Afficher (s1, s2, total) Affiche $200, $500,

$700

t10 ConfirmerTransaction

t11 Interruption!

Protocole de contrôle de concurrence par estampillage  sérialisable par permutation

Ordonnancement séquentiel équivalent :

ordre des estampilles des transactions

Exemple non récupérable :

sinon accepter : Estampille-E(B) := Estampille(T)

(56)

27/02/22 © Robert Godin. Tous droits réservés. 56

14.5.6.1 Protocole de contrôle de concurrence par estampillage strict

 Retarder Lire(B, ...)tant que la

dernière transaction ayant écrit B n'est pas terminée

– inclure indicateur de fin de transaction

– empêche lecture impropre

– ~verrouillage en lecture

Références

Documents relatifs

Bruner compléta ces observations et fit remar- querque s'il est vrai que la mémoire à courtterme ne peut retenir que le « nombre magique de sept éléments », condenser les

– Deux opérations de lecture ou d'écriture dans deux transactions différentes sont non permutables si elles portent sur la même donnée et au moins une des deux est

– Deux opérations de lecture ou d'écriture dans deux transactions différentes sont non permutables si elles portent sur la même donnée et au moins une des deux est

Déduis-en le classement des premiers quotients dans l’ordre

Déduis-en le classement des premiers quotients dans l’ordre

[r]

Diviser deux nombres en écriture fractionnaire.. b.L’opposé du tiers de l’inverse de 5 :

Diviser deux nombres en écriture fractionnaire.. b.L’opposé du tiers de l’inverse de 5 :