Les transactions - Georges Gardarin

publicité
Les transactions
COMPTES Numéro
Nom
Prénom
Adresse
Type
Solde
OPERATION Numéro
NuméroCompte
DateOpération
DateValeur
Valeur
Expression des contraintes
1) Coder ces opérations en procédures PL/SQL:
le débit (D), le crédit (C), l’affichage du solde (S), le virement (V) et la vérification de solvabilité.
2) Créer les contraintes suivantes :
 Le solde d’un compte ne doit pas être négatif
 Les compte de type épargne sont plafonnées à un solde de 2000 Euros
3) On suppose les séquences d’opérations suivantes (une seule transaction). Que se passe-t-il ?
Compte A = 1000 Euros, type épargne.
Compte B = 1000 Euros, type chèque.
C(A, 500), S(A), C(A, 600), Commit, V(A, B, 300), Commit , D(A, 1600), D(B, 100), Commit, S(A), S(B)
Contrôle de concurrence
Rappels de cours : le niveau d’isolation sérialisable
2eme action
\
1ere action
Lecture
Lecture
OK
Ecriture
KO
Ecriture
KO
KO
On suppose ici que la granularité de verrouillage est le tuple.
Avec deux transactions
On se place dans le cas de deux transactions simultanées sur le compte X, dont le solde est 1000 Euros. La
première (T1) réalise un débit automatique de 400 Euros sur ce compte, la seconde (T2) englobe les actions
réalisées par monsieur X face au distributeur de billets (consultation de son solde puis retrait de 800 Euros).
4) On se place au niveau d’isolation sérialisable . Au moment où T1 lance sont débit, Monsieur X consulte son
solde dans T2. Que se passe-t-il ? Et Si Monsieur X retire 300 Euros ? Comment accélérer l’exécution de ces
transactions ?
Cas de transactions nombreuses
6 gestionnaires de comptes bancaires réalisent simultanément des opérations sur 4 comptes A, B, C, et D.
Chaque gestionnaire travaille dans une transaction. Ces comptes sont manipulés simultanément par les
gestionnaires de la façon suivante :
E2(A), L2(B), L6(D), E5(C), E3(A), L5(A), L1(C), L2(D), L3(C), E4(C), E3(D), L4(B), L1(B).
i. e le gestionnaire 2 crédite ou débite le compte A, puis le gestionnaire 2 consulte le solde du compte B, etc.
6) Construire le graphe de précédence de ces transactions. Quels problèmes d’exécution pourraient survenir ?
Cette exécution est-elle sérialisable ?
On se place dans le cas du verrouillage, sans choisir un algorithme particulier pour résoudre les conflits.
7) Montrer que l’algorithme de verrouillage repère le problème de cette exécution. Quel serait l’algorithme de
résolution de conflit le plus adapté à cette exécution ?
8) On suppose maintenant que l’on connaît à l’avance les 6 transactions à exécuter en parallèle. Comment
optimiser l’algorithme de verrouillage ou de résolution de conflit vis à vis de cette exécution particulière pour
exécuter de façon optimale toutes les transactions ?
On se place maintenant dans le cas de l’estampillage.
8) Est-on sur de rendre cette exécution sérialisable avec le système d’estampillage ? Prouvez que cela est vrai
pour toute exécution non sérialisable. Proposer un algorithme de lecture et un algorithme d’écriture avec
estampillage.
9) L’algorithme d’estampillage est-il mieux adapté à cette exécution que le verrouillage ?
Cas des transactions réparties : protocole de validation atomique
La validation atomique a pour but d'assurer l'atomicité d'une transaction distribuée même en présence de pannes.
Chaque site accédé par une branche de transaction distribuée est appelé participant. Les différents participants se
mettent d'accord sur l'issue d'une transaction en exécutant un protocole de validation atomique. Dans ce
protocole, chacun révèle sa capacité à valider en émettant un vote. Un vote oui (ou prêt) implique que le
participant s'engage à rendre permanentes les mises à jour effectuées par la transaction même s'il tombe en
panne. Un vote non (ou abandon) indique qu'il ne pourra pas valider suite à un problème interne. De plus, un
protocole de validation atomique doit être tolérant aux pannes (pannes de sites ou pannes de communications).
La validation atomique est mise en œuvre dans le protocole de validation à Deux-Phases (2PC). Un site nommé
coordinateur dirige les participants. Le protocole est formé de deux phases:
 une phase de vote : le coordinateur envoie un message de demande de vote, appelé aussi message prepare, à
tous les participants. Chaque participant répond au coordinateur en votant pour la validation ou pour
l'abandon. Si un participant vote non, il envoie son vote et abandonne unilatéralement sa branche de
transaction. Par contre, si un participant vote oui, il envoie son vote et se met en attente de la décision finale
du coordinateur. Le participant est alors dans un état appelé "prêt à valider" dans lequel il ne pourra plus ni
valider ni abandonner que s'il reçoit la décision du coordinateur.
 une phase de décision : le coordinateur reçoit les votes, puis informe les sites du résultat de sa décision. Si
tous les participants ont voté oui, le coordinateur décide de valider la transaction. Si un ou plusieurs
participants ont voté non, il décide d'abandonner. Les participants qui sont en attente du résultat se
conforment à cette décision et envoient un message d'acquittement.
Pour assurer la tolérance aux pannes, les différentes étapes du protocole 2PC sont enregistrées dans des journaux
maintenus au niveau du coordinateur et des participants. On distingue deux types d'écriture dans un journal. :
 Une écriture est dite non forcée si l'enregistrement correspondant est mémorisé dans un journal en mémoire
puis reporté sur un espace de stockage stable1.
 Une écriture est dite forcée si elle impose le report immédiat du contenu du journal sur un espace de
stockage stable (n'est jamais perdu en cas de panne).
10) Quelles écritures sont obligatoirement forcées dans ce protocole ? D’après ces considérations, déterminer le
nombre d'entrées-sorties disque bloquantes nécessaire au bon déroulement du protocole engageant P participants.
11) Discuter les inconvénients du 2PC. Comment améliorer le protocole ? Valider les propos par des
comparaisons en terme de nombre de messages échangés, nombre d’écritures forcées, latence (en nombre
d'étapes de communication entre le moment où la validation est soumise au coordinateur et le moment où la
validation devient effective sur chaque participant).
1
Un espace de stockage est dit stable s'il est non-volatile et fiable.
Téléchargement