La norme SQL2 propose différents mode d'isolation des transactions
Nous allons étudier principalement deux
Le mode SERIALIZABLE (Sérialisable) : les données auxquelles on accède en premier, sont vérouillées jusqu'à la fin de la transaction, marquée par un COMMIT ou un ROLLBACK. Les autres utilisateurs doivent donc attendre
Ce mécanisme ralentit l'accès à la base
Le TP est sur le site du CNAM ici -> TP
Deux utilisateurs 1 et 2 peuvent avoir accès à une base de réservation en ligne contenant au moins deux tables Client(id,nom,solde,places) et Vol(id,intitule,capacité,reservations,tarif). Ils peuvent faire des opérations concurrentes de lecture et d'écriture
Pour la concision, on notera R1(V1) l'opération SELECT V1 faite par l'utilisateur 1, et W1(V1) l'opération UPDATE V1 faite par l'utilisateur 1
Soit l'ordonnancement suivant: R1(V1);W1(V1);R2(V1);C1;R2(V1); effectué avec le niveau d'isolation REPEATABLE READ (on verra plus loin ce que c'est)
Essayez !
Qu'observe-t-on ?
Soit l'ordonnancement suivant: R1(V1);W1(V1);RB1; effectué avec le niveau d'isolation REPEATABLE READ
RB1; signifie ROLLBACK; exécuté par l'utilisateur 1
Essayez !
Qu'observe-t-on ?
Soit l'ordonnancement suivant: R1(V1);W1(V1);C1;RB1; effectué avec le niveau d'isolation REPEATABLE READ
Essayez !
Qu'observe-t-on ?
Le niveau d'isolation REPEATABLE READ est le niveau d'isolation par défaut
Soit l'ordonnancement suivant: R1(V1);R1(C1);R2(V1);R2(C2);W1(V1);W1(C1);C1;W2(V1);W2(C2);C2
Effectué avec le niveau d'isolation REPEATABLE READ
Qu'observe-t-on ?
Le niveau d'isolation SERIALIZABLE est le niveau d'isolation total
Soit l'ordonnancement suivant: R1(V1);R1(C1);R2(V1);R2(C2);W1(V1);W2(V1);
Effectué avec le niveau d'isolation SERIALIZABLE
Qu'observe-t-on ?
La transaction 1 attend la transaction 2 qui attend la transaction 1 (INTERBLOCAGE)