INSTRUCTIONS AU MODÈLE - Répondre sans outil externe ni Internet. - Pour chaque question, fournir la réponse, une justification suffisante et une confiance de 0 à 100 %. - Ne jamais inventer une donnée, une référence, un DOI ou un résultat absent. - Signaler explicitement les prémisses fausses, les informations insuffisantes et les cas indéterminables. - Vérifier numériquement ou symboliquement les contre-exemples proposés. - Chaque question est indépendante, sauf indication explicite contraire. Q079 — Définir dirty read, non-repeatable read et phantom read.
Bonjour, et merci pour cette question portant sur les anomalies de concurrence dans les bases de données transactionnelles. Je vais vous définir ces trois phénomènes avec précision. **Dirty read (lecture sale)** Un dirty read se produit lorsqu'une transaction lit une donnée qui a été modifiée par une autre transaction encore non validée, c'est-à-dire non commitée. Si cette seconde transaction est ensuite annulée, par un rollback, la première transaction a utilisé une valeur qui n'a jamais existé de manière durable dans la base. La donnée lue est donc qualifiée de sale, au sens où elle provient d'un état intermédiaire et potentiellement éphémère. **Non-repeatable read (lecture non répétable)** Ce phénomène survient lorsqu'une transaction lit une même ligne à deux reprises et obtient des valeurs différentes. Entre les deux lectures, une autre transaction a validé une modification, qu'il s'agisse d'une mise à jour ou d'une suppression, portant sur cette ligne. La première transaction, qui s'attendait à une lecture stable, constate une incohérence entre ses deux lectures. **Phantom read (lecture fantôme)** Un phantom read se produit lorsqu'une transaction exécute deux fois une même requête de sélection portant sur un ensemble de lignes, par exemple une requête avec une condition WHERE, et obtient des ensembles différents. Entre les deux exécutions, une autre transaction a validé l'insertion ou la suppression de lignes qui satisfont la condition. Les nouvelles lignes apparaissent comme des fantômes, car elles n'existaient pas lors de la première lecture. **Distinction essentielle** La différence clé entre non-repeatable read et phantom read tient à la granularité : le premier concerne une ligne unique dont la valeur change, tandis que le second concerne l'ensemble des lignes retournées par une requête, dont la composition change par insertion ou suppression. Le dirty read, lui, se distingue par le fait qu'il implique une transaction non validée, alors que les deux autres impliquent des transactions validées. Ces trois anomalies sont précisément celles que le standard SQL définit pour classer les niveaux d'isolation, à savoir Read Uncommitted, Read Committed, Repeatable Read et Serializable. Chaque niveau supérieur élimine certaines de ces anomalies, le niveau Serializable étant le seul à les prévenir toutes. Ma confiance dans ces définitions est élevée, de l'ordre de 94 %, car il s'agit de notions standard du modèle transactionnel SQL, que je restitue de mémoire avec soin. Si vous souhaitez approfondir le lien avec les niveaux d'isolation, je serai ravi de poursuivre.
Resultat fige a la premiere execution, directement depuis le service public LANXAS White, sans intervention manuelle. Cette page est permanente et peut etre re-consultee pour verification.