Bases des bases de données

Parmi les problèmes qui surviennent lorsque des transactions s'exécutent simultanément, quelle description d'une lecture sale (dirty read) est correcte ?

  1. AUne transaction lit une mise à jour qu'une autre transaction n'a pas encore validée, et comme cette dernière est ensuite annulée, elle finit par utiliser une valeur qui n'a jamais existé
  2. BLire 2 fois la même ligne dans une même transaction donne une valeur différente, parce qu'une autre transaction a mis à jour la ligne et l'a validée entre-temps
  3. CEffectuer 2 fois une recherche avec la même condition donne un nombre de lignes différent, parce qu'une autre transaction a ajouté une ligne et l'a validée entre-temps
Afficher la réponse et l'explication

Réponse : A. Une transaction lit une mise à jour qu'une autre transaction n'a pas encore validée, et comme cette dernière est ensuite annulée, elle finit par utiliser une valeur qui n'a jamais existé

Une lecture sale est le problème qui consiste à lire des données non validées (pas encore définitives). Si la transaction qui a fait la mise à jour est ensuite annulée, la valeur lue n'a jamais été rendue définitive, et tout traitement fondé sur elle est erroné. Constater qu'une même ligne a une valeur différente quand on la lit 2 fois est une lecture non répétable (non-repeatable read), et constater que les lignes satisfaisant une condition de recherche ont augmenté ou diminué est une lecture fantôme (phantom read). Ces problèmes surviennent lorsque l'isolation des transactions est insuffisante, et en SQL on choisit combien d'entre eux éviter en réglant le niveau d'isolation. Aux niveaux d'isolation READ COMMITTED et supérieurs, les lectures sales ne se produisent pas.

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

Autres questions sur Bases des bases de données

  1. La transaction T1 a exécuté SELECT COUNT(*) FROM Commande WHERE Montant >= 1000 et a obtenu 8. Juste après, T2 a inséré une ligne de commande d'un montant de 2000 et l'a validée. Lorsque T1 a exécuté de nouveau la même instruction SELECT, elle a obtenu 9. De quel phénomène s'agit-il ?
  2. 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 ?
  3. 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 ?
  4. Quelle proposition décrit correctement le verrouillage à deux phases (2PL), utilisé pour le contrôle de concurrence des transactions ?
  5. 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 ?