Niveaux d'isolation et anomalies
Les anomalies entre transactions concurrentes (lecture sale, non répétable, fantôme, mise à jour perdue) et les quatre niveaux de la norme SQL : ce que chacun empêche et ce qu'il coûte.
- 25 cartes
- 5 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Sur la frise
- Mises en situation
Quelques cartes du deck
Lecture sale : de quoi s'agit-il ?
Voir la réponse
Lecture d'une valeur écrite par une autre transaction qui n'a pas encore validé : si elle annule, on a lu une valeur qui n'a jamais existé.
Seul READ UNCOMMITTED l'autorise, selon la norme. À tous les niveaux supérieurs, une lecture ne voit que des données validées.
Sous PostgreSQL, en READ COMMITTED, le solde vaut 100. T1 le passe à 50 sans valider. T2 lit alors le solde. Que voit T2 ?
100500- Une erreur : la ligne est en cours de modification
Voir la réponse
100READ COMMITTED interdit la lecture sale : T2 ne voit que la dernière valeur validée, 100, sans attendre T1. Si T1 annule, T2 n'aura rien lu de faux.
La norme SQL définit quatre niveaux, du plus permissif au plus strict : READ UNCOMMITTED, …, REPEATABLE READ et ….
Voir la réponse
La norme SQL définit quatre niveaux, du plus permissif au plus strict : READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ et SERIALIZABLE.
SERIALIZABLE garantit un résultat identique à une exécution des transactions l'une après l'autre. READ COMMITTED est le niveau par défaut de nombreuses bases, dont PostgreSQL.
Lecture non répétable : de quoi s'agit-il ?
Voir la réponse
Une même ligne, relue dans la même transaction, a changé de valeur parce qu'une autre transaction a validé une modification entre les deux lectures.
Elle concerne une ligne déjà lue qui est modifiée. Elle reste possible en READ COMMITTED et disparaît à partir de REPEATABLE READ.
En READ COMMITTED, un rapport lit le plafond du client 42 au début, puis relit cette même ligne à la fin de la même transaction et obtient deux valeurs : un conseiller a modifié ce plafond et validé entre-temps. Quel est le niveau le plus bas, selon la norme, qui corrige ?
- READ UNCOMMITTED
- SERIALIZABLE
- REPEATABLE READ
- READ COMMITTED avec un SAVEPOINT entre les deux lectures
Voir la réponse
REPEATABLE READ
Une ligne déjà lue qui change : c'est une lecture non répétable, que REPEATABLE READ interdit. SERIALIZABLE corrige aussi, mais coûte plus. READ UNCOMMITTED est encore plus permissif, et un SAVEPOINT ne fige aucune lecture.