Bases des bases de données

Parmi les niveaux d'isolation définis par la norme SQL, quelle combinaison indique correctement les phénomènes qui peuvent se produire avec READ COMMITTED ?

  1. AAucun des phénomènes de lecture sale, de lecture non répétable ou de lecture fantôme ne peut se produire
  2. BLes lectures sales ne peuvent pas se produire, mais les lectures non répétables et les lectures fantômes le peuvent
  3. CLes lectures sales et les lectures non répétables ne peuvent pas se produire, mais les lectures fantômes le peuvent
Afficher la réponse et l'explication

Réponse : B. Les lectures sales ne peuvent pas se produire, mais les lectures non répétables et les lectures fantômes le peuvent

La norme SQL définit 4 niveaux d'isolation, du moins protecteur au plus protecteur : READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ et SERIALIZABLE. Avec READ UNCOMMITTED, les 3 phénomènes peuvent tous se produire. READ COMMITTED ne lit que des données validées et évite donc les lectures sales, mais comme chaque lecture voit la valeur validée à cet instant, les lectures non répétables et les lectures fantômes peuvent se produire. REPEATABLE READ évite en plus les lectures non répétables, mais les lectures fantômes restent possibles. SERIALIZABLE évite les 3 et garantit le même résultat qu'une exécution des transactions l'une après l'autre dans un certain ordre. Plus le niveau d'isolation est élevé, plus les attentes de verrous et les reprises sont nombreuses et moins on peut traiter de travail simultanément ; on choisit donc le niveau selon l'application. Dans les SGBD réels, le niveau d'isolation par défaut, et les phénomènes que chaque niveau évite effectivement, peuvent être plus stricts que les exigences minimales de la norme.

S'entraîner sur ce thème Retour au thème

Autres questions sur Bases des bases de données

  1. La transaction T1 détient un verrou partagé sur une ligne et la lit. Sur la même ligne, T2 demande un verrou partagé et T3 un verrou exclusif. Quelle affirmation est correcte pour la période qui précède la libération du verrou par T1 ?
  2. Quelle proposition décrit correctement le verrouillage à deux phases (2PL), utilisé pour le contrôle de concurrence des transactions ?
  3. La transaction T1 a posé un verrou exclusif sur la ligne A puis demandé un verrou sur la ligne B, tandis que T2 a posé un verrou exclusif sur la ligne B puis demandé un verrou sur la ligne A ; aucune ne peut donc progresser. Que fait généralement un SGBD lorsqu'il détecte cette situation ?
  4. Lors de la mise à jour des données, de nombreux SGBD enregistrent les modifications dans un journal (log) et écrivent ce journal sur un support de stockage non volatil avant la base de données elle-même (WAL : journalisation à écriture anticipée, write-ahead logging). Quelle est la principale raison de cette approche ?
  5. On considère les transactions T1 à T5 ; un point de contrôle (checkpoint) a été pris une fois avant qu'une panne ne survienne. T1 a démarré et a été validée avant le point de contrôle. T2 et T3 ont démarré avant le point de contrôle ; T2 a été validée après le point de contrôle mais avant la panne, et T3 n'était pas validée au moment de la panne. T4 et T5 ont démarré après le point de contrôle ; T4 a été validée avant la panne, et T5 ne l'était pas. Lors de la reprise après la panne, quelles transactions faut-il rejouer (rollforward) à l'aide du journal ?