Title: Contr
1Contrôle de lAccès Simultané
2Plans Sérialisables par Rapport aux Conflits
- Deux actions sont en conflit si
- elles opèrent sur le même élément de la BD,
- elles appartiennent à différentes transactions,
- une delles au moins est une action décriture.
- Deux plans sont équivalents par rapport aux
conflits si - Ils contiennent les mêmes actions des mêmes
transactions. - Chaque pair dactions conflictuelles est ordonnée
de la même manière dans les deux plans. - Un plan S est sérialisable par rapport aux
conflits ssi S est équivalent par rapport aux
conflits à un (quelconque) plan séquentiel
(sériel). - Rappel
- plan sérialisable
- plan recouvrable
- plan évitant les abandons en cascade
3Exemple
- Le plan suivant nest pas sérialisable p.r.
conflits - Le cycle dans ce graphe révèle le problème. Le
résultat de T1 dépend de T2 et vice-versa.
T1 R(A), W(A), R(B), W(B) T2
R(A), W(A), R(B), W(B)
A
T1
T2
Graphe de dépendance
B
4Graphe de Dépendance
- Graphe de dépendance (précédence) contient
- un nœud par Xact
- une arête de Ti à Tj si une action de Ti précède
et entre en conflit avec une action de Tj. - Théorème Un plan est sérialisable p.r. conflits
si et seulement si son graphe de dépendance est
acyclique.
52PL Strict Rappel
- Protocole Strict Two-phase Locking (Strict
2PL) - Chaque Xact doit obtenir un verrou (partagé) du
genre S sur un objet avant de le lire, et un
verrou (exclusif) du genre X sur un objet avant
de le lire. - Tous les verrous sont retenus par une Xact
jusquà sa fin complète. - Si une Xact retient un verrou X sur objet,
aucune autre Xact ne peut obtenir un verrou sur
cet objet. - 2PL strict ne permet que des plans dont le graphe
de dépendance est acyclique.
62PL
- Protocole Two-phase Locking (2PL)
- Chaque Xact doit obtenir un verrou (partagé) du
genre S sur un objet avant de le lire, et un
verrou (exclusif) du genre X sur un objet avant
de le lire. - Aucune Xact ne peut obtenir de verrous
supplémentaires après quelle ait relâché un
verrou. - Si une Xact retient un verrou X sur objet,
aucune autre Xact ne peut obtenir un verrou sur
cet objet. - 2PL permet des plans non recouvrables.
7Gestion des Verrous
- Les requêtes pour verrouiller/déverrouiller sont
traitées par le lock manager. - Le lock manager maintient une table des verrous,
i.e. une table de hachage avec lidentité de
lobjet de la base de données comme clé. - Une entrée dans la table des verrous contient au
moins - de Xacts présentement verrouillant un objet
- Type de verrous (S ou X)
- Pointeur vers la queue des requêtes des verrous
- Verrouiller et déverrouiller doivent être des
opérations atomiques. - Promouvoir un verrou transformer un verrou S en
un verrou X. - Rétrograder un verrou transformer un verrou X en
un verrou S. Cette approche est la plus répandue
dans les systèmes commerciaux.
8Interblockages (Deadlocks)
- Interblockage Cycle des transactions attendant
que dautres transactions leur passent des
verrous sur un objet donnée. - Deux voies de solutions classiques pour traiter
les interblockages sont - prévention
- détection
9Prévention des Interblockages
- Assigner des priorités basées sur des estampilles
(timestamps) lestampille la plus petite a
la plus grande priorité i.e. les vieilles Xacts
ont priorité sur les plus jeunes. - Supposez que Ti veut un verrou retenu par Tj.
Deux polices sont possibles à ce sujet - Wait-Die Si Ti a une plus grande priorité,
Ti attend que Tj finisse sinon Ti est abandonnée
et recommencée - Wound-wait Si Ti a une plus grande priorité,
Tj est abandonnée et recommencée sinon Ti attend - Si une transaction recommence, elle doit
reprendre son estampille initiale. - La prévention est aussi possible en utilisant un
2PL conservateur chaque Xact obtient à lavance
tous les verrous dont elle pourrait avoir besoin.
10Détection des Interblockages
- Créer un graphe waits-for
- Les nœuds sont des transactions
- Il y a une arête allant de Ti à Tj si Ti est
entrain dattendre que Tj relâche un verrou - Ensuite vérifier périodiquement sil ny a pas de
cycles dans le graphe waits-for.
11Détection des Interblockages (Suite)
- Exemple
- T1 S(A), R(A), S(B)
- T2 X(B),W(B) X(C)
- T3 S(C), R(C) X(A)
- T4 X(B)
T1
T2
T1
T2
T4
T3
T3
T3
12Contrôle dAccès Simultané Optimiste
- Le verrouillage est une approche conservatrice et
pessimiste dans laquelle on prévient les
conflits. Desavantages - Coût de la gestion des verrous
- Détection/résolution des interblockages
- Congestion pour les objets très utilisés
- Si les conflits sont plutôt rares, on pourrait
gagner en accès simultané en évitant de
verrouiller les objets, mais plutôt en vérifiant
la présence des conflits avant que les Xacts ne
soient validées.
13Le Modèle de Kung-Robinson
- Dans un protocole optimiste, les Xacts ont trois
phases - LECTURE Les Xacts lisent les données de la base
de données, mais procèdent aux changements sur
des copies privées des données lues. - VALIDATION Chercher les conflits.
- ECRITURE Les copies locales modifiées par les
Xacts validées sont rendues publiques.
ROOT
14Accès Simultané à Base dEstampilles
- Idée Donner à chaque objet une estampille de
lecture (RTS), une estampille décriture (WTS),
ainsi quune estampille de base (TS) au moment où
elle commence - Si laction ai dune Xact Ti est en conflit avec
une action aj dune autre Xact Tj, et TS(Ti) lt
TS(Tj), alors ai doit être exécutée avant aj.
Sinon, recommencer toute Xact qui violerait cet
ordre.
15Lorsque une Xact T veut Lire un Objet O
- Si TS(T) lt WTS(O), cela viole lordre des
estampilles par rapport à la Xact qui a écrit O. - Ainsi if faut abandonner T et la recommencer avec
une nouvelle et plus grande estampille TS. (Si T
est recommencé avec la même TS, T échouera à
nouveau!) - Si TS(T) gt WTS(O)
- Permettre à T de lire O.
- RTS(O) devient max(RTS(O), TS(T))
- Les changements faits sur RTS(O) lors des
lectures doivent être écrits sur disque! Cela
entraîne des coûts (de même que les incessants
recommencements des Xacts).
16Lorsquune Xact T veut Écrire un Objet O
- Si TS(T) lt RTS(O), cela viole lordre des
estampilles par rapport à la Xact qui a écrit O.
Doù T est abandonnée puis recommencée. - Si TS(T) lt WTS(O), cela viole lordre des
estampilles par rapport à la Xact qui a écrit O.
(Abandonner T ou appliquer la règle de Thomas) - Règle décriture de Thomas On peut ignorer de
telles modifications périmées pas besoin de
recommencer T! (la modification faite par T est
effectivement suivie par une autre sans lectures
intercalées.) Ceci permet quelques plans
sérialisables mais pas sérialisables par rapport
aux conflits - Sinon, permettre à T décrire O
- et WST(O) prend la même
- valeur que TS(T).
T1 T2 R(A) W(A)
Commit W(A) Commit
17Estampilles vs.Recouvrabilité
- Malheureusement, les estampilles permettent des
plans nonrecouvrables
- La méthode des estampilles peut être
- modifiée afin de permettre seulement
- des plans recouvrables 2 stratégies sont
possibles - Stocker toute écriture en tampon jusquà la
validation de la Xact qui écrit (Mais mettre à
jour la WTS(O) lorsque lécriture est permise.) - Bloquer toute Xact T qui lit (où TS(T) gt WTS(O))
jusquà ce que la Xact qui écrit O soit validée. - Similitude avec 2PL les Xacts qui lisent ne
relâchent les verrous quaprès validation.
18Résumé
- Plusieurs méthodes de contrôle daccès simultané
basées sur le verrouillage existent (Strict 2PL,
2PL). Le graphe de dépendance permet de détecter
les conflits entre Xacts. - Le lock manager gère les verrous sur les objets.
Les interblockages peuvent soit être prévenus ou
détectés.
19Résumé (Suite)
- Le contrôle daccès simultané optimiste vise à
minimaliser les coûts dun tels accès dans un
environnement dit optimiste dans lequel les
lectures sont répandues et les écritures plutôt
rares. - Le contrôle optimiste engendre cependant dautres
coûts beaucoup de systèmes commerciaux utilisent
le verrouillage. - Les estampilles sont une autre alternative à 2PL
elles permettent certains plans sérialisables que
2PL ne permettent pas. - La recouvrabilité avec les estampilles est
similaire au traitement des écritures dans 2PL.