ScholarGate
Assistant

Niveaux d'isolation

Les niveaux d'isolation définissent dans quelle mesure une transaction est protégée des effets d'autres transactions concurrentes, en échangeant certaines garanties d'isolation contre une concurrence et un débit accrus.

Trouver un sujet avec PaperMindBientôtFind papers & topics
Tools & resources
Télécharger les diapositives
Learn & explore
VidéoBientôt

Definition

Un niveau d'isolation est une spécification des anomalies de concurrence qu'une transaction peut observer ; les niveaux supérieurs préviennent davantage d'anomalies (jusqu'à la sérialisabilité complète) au prix d'une concurrence réduite, tandis que les niveaux inférieurs permettent certaines anomalies en échange de performances.

Scope

Ce sujet couvre les niveaux d'isolation standard — lecture non validée (read uncommitted), lecture validée (read committed), lecture reproductible (repeatable read) et sérialisable (serializable) — définis en fonction des phénomènes (lecture sale (dirty read), lecture non reproductible (non-repeatable read), fantôme (phantom)) que chacun permet ou empêche, la critique influente qui les a recadrés en termes d'anomalies autorisées, ainsi que l'isolation par instantané (snapshot isolation) d'importance pratique et ses anomalies telles que le décalage d'écriture (write skew). Il aborde le compromis entre cohérence et concurrence. Il exclut les mécanismes sous-jacents de verrouillage et de multiversion qui implémentent ces niveaux.

Core questions

  • Quelles anomalies — lecture sale (dirty read), lecture non reproductible (non-repeatable read), fantôme (phantom) — chaque niveau d'isolation permet-il ?
  • Comment la norme SQL définit-elle les quatre niveaux d'isolation ?
  • Pourquoi les chercheurs ont-ils critiqué les définitions basées sur les anomalies comme étant ambiguës ?
  • Où se situe l'isolation par instantané (snapshot isolation), et quelles anomalies (telles que le décalage d'écriture (write skew)) peut-elle permettre ?
  • Comment les applications choisissent-elles un niveau d'isolation pour une charge de travail donnée ?

Key concepts

  • lecture non validée (read uncommitted)
  • lecture validée (read committed)
  • lecture reproductible (repeatable read)
  • sérialisable (serializable)
  • lecture sale (dirty read)
  • lecture non reproductible (non-repeatable read)
  • lecture fantôme (phantom read)
  • isolation par instantané (snapshot isolation) et décalage d'écriture (write skew)

Key theories

Niveaux d'isolation basés sur les anomalies
La norme SQL définit les niveaux d'isolation en fonction des trois phénomènes — lectures sales (dirty reads), lectures non reproductibles (non-repeatable reads) et fantômes (phantoms) — qu'ils autorisent, allant de la lecture non validée (read uncommitted) (tous permis) au sérialisable (serializable) (aucun permis).
Critique des niveaux d'isolation ANSI
Berenson et ses collègues ont montré que les définitions basées sur les phénomènes de la norme sont ambiguës et ne caractérisent pas clairement les systèmes multiversions, et ils ont introduit l'isolation par instantané (snapshot isolation) comme un niveau distinct, largement implémenté, non couvert par les définitions originales.
L'isolation par instantané et ses anomalies
Sous l'isolation par instantané (snapshot isolation), chaque transaction lit un instantané cohérent tel qu'il était au début de la transaction, offrant un comportement de lecture robuste sans verrous de lecture, mais elle peut permettre des anomalies non sérialisables telles que le décalage d'écriture (write skew), ce qui a motivé l'isolation par instantané sérialisable (serializable snapshot isolation).

Clinical relevance

Le niveau d'isolation est un choix de configuration courant mais lourd de conséquences pour les développeurs d'applications : choisir un niveau trop faible peut corrompre silencieusement les données par des anomalies subtiles, tandis que l'utilisation systématique du niveau sérialisable peut brider le débit. Il est donc essentiel de comprendre ces niveaux pour des applications transactionnelles correctes et performantes.

History

La norme ANSI/ISO SQL a défini les niveaux d'isolation en termes de phénomènes autorisés. La critique de 1995 par Berenson, Bernstein, Gray et les O'Neil a exposé les ambiguïtés de ces définitions et a caractérisé l'isolation par instantané (snapshot isolation), que les bases de données multiversions courantes ont adoptée. Des travaux ultérieurs ont défini l'isolation par instantané sérialisable (serializable snapshot isolation) pour combler le fossé d'anomalies restant.

Debates

Définir l'isolation par les anomalies versus par la sérialisabilité
Les définitions de la norme basées sur une liste d'anomalies sont faciles à énoncer mais ambiguës et ne conviennent pas aux systèmes multiversions ; une alternative est de définir la correction directement via la sérialisabilité, ce qui est plus clair mais plus difficile à transposer aux niveaux que les développeurs configurent en pratique.

Key figures

  • Jim Gray
  • Philip Bernstein
  • Hal Berenson

Related topics

Seminal works

  • berenson1995
  • gray1992

Frequently asked questions

Quelle est la différence entre une lecture non reproductible (non-repeatable read) et une lecture fantôme (phantom read) ?
Une lecture non reproductible (non-repeatable read) se produit lorsqu'une transaction lit deux fois la même ligne et voit des valeurs différentes parce qu'une autre transaction l'a mise à jour entre-temps. Une lecture fantôme (phantom read) se produit lorsqu'une transaction réexécute une requête avec une condition de recherche et voit de nouvelles lignes qu'une autre transaction a insérées. La lecture reproductible (repeatable read) empêche la première ; seule la sérialisabilité (serializable) prévient de manière fiable les fantômes.
L'isolation par instantané (snapshot isolation) est-elle la même chose que la sérialisabilité (serializable) ?
Non. L'isolation par instantané (snapshot isolation) fournit à chaque transaction un instantané cohérent et empêche les lectures sales (dirty reads) et non reproductibles (non-repeatable reads), mais elle n'est pas entièrement sérialisable : elle permet des anomalies de décalage d'écriture (write-skew) où deux transactions lisent des données qui se chevauchent et effectuent des mises à jour disjointes qui, ensemble, violent une contrainte. L'isolation par instantané sérialisable (serializable snapshot isolation) l'étend pour éliminer de telles anomalies.

Methods for this concept

Related concepts