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 ?
- 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é
- 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
- 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.
Continuer : 9 autres questions sur Bases des bases de données