Pouvez-vous expliquer ce que l'on entend par phénomène de lecture fantôme dans le contexte des transactions?
sobes.tech IA
Réponse de l'IA
Le phénomène de lecture fantôme se produit dans le contexte des transactions de bases de données, lorsque dans une même transaction, une requête répétée sur les données retourne des résultats différents parce qu'une autre transaction a ajouté ou supprimé des lignes correspondant à la condition de sélection.
Par exemple, si dans la première partie d'une transaction, nous avons sélectionné toutes les entrées avec une certaine condition, puis dans la seconde partie, nous répétons la même requête, de nouvelles lignes (fantômes) peuvent apparaître en raison de modifications parallèles dans la base.
Cela est lié au niveau d'isolation des transactions : la lecture fantôme est possible au niveau READ COMMITTED, mais est empêchée au niveau SERIALIZABLE.
Exemple:
-- Transaction 1
BEGIN;
SELECT * FROM orders WHERE status = 'pending'; -- a retourné 5 enregistrements
-- La transaction 2 ajoute en parallèle un nouvel enregistrement avec status = 'pending'
SELECT * FROM orders WHERE status = 'pending'; -- retournera maintenant 6 enregistrements
COMMIT;