Définition des niveaux d'isolement - Amazon Neptune

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Définition des niveaux d'isolement

Le « I » dans ACID signifie isolation. Le degré d'isolement d'une transaction détermine dans quelle mesure les autres transactions simultanées peuvent affecter les données sur lesquelles elle opère.

La SQLnorme : 1992 a créé un vocabulaire pour décrire les niveaux d'isolement. Elle définit trois types d'interactions (que l'on appelle des phénomènes) qui peuvent se produire entre deux transactions simultanées, Tx1 et Tx2 :

  • Dirty read : se produit lorsque Tx1 modifie un élément, puis que Tx2 lit cet élément avant que Tx1 n'ait validé la modification. Ensuite, si Tx1 ne réussit jamais à valider la modification ou l'annule, Tx2 a lu une valeur qui n'est jamais parvenue à la base de données.

  • Non-repeatable read : se produit lorsque Tx1 lit un élément, puis que Tx2 modifie ou supprime cet élément et valide la modification, et que Tx1 essaie de relire l'élément. Tx1 lit alors une valeur différente de la valeur précédente ou constate que l'élément n'existe plus.

  • Phantom read : se produit lorsque Tx1 lit un ensemble d'éléments qui répondent à un critère de recherche, puis que Tx2 ajoute un nouvel élément qui répond au critère de recherche et que Tx1 répète la recherche. Tx1 obtient alors un ensemble d'éléments différent de celui obtenu auparavant.

Chacun de ces trois types d'interaction peut entraîner des incohérences dans les données de résultat d'une base de données.

La SQL norme : 1992 a défini quatre niveaux d'isolation offrant des garanties différentes en ce qui concerne les trois types d'interaction et les incohérences qu'ils peuvent produire. À ces quatre niveaux, une transaction peut avoir la garantie de s'exécuter complètement ou de ne pas s'exécuter du tout :

  • READ UNCOMMITTED : autorise les trois types d'interaction, c'est-à-dire les lectures corrompues (dirty read), les lectures non reproductibles (non-repeatable read) et les lectures fantôme (t=phantom read).

  • READ COMMITTED : les lectures corrompues ne sont pas possibles, mais les lectures non reproductibles et fantôme le sont.

  • REPEATABLE READ : ni les lectures corrompues ni les lectures non reproductibles ne sont possibles, mais les lectures fantôme le sont encore.

  • SERIALIZABLE : aucun des trois types de phénomène d'interaction ne peut se produire.

Le contrôle de simultanéité multiversion (MVCC) permet un autre type d'isolation, à savoir SNAPSHOTl'isolation. Cela garantit qu'une transaction s'exécute sur un instantané des données telles qu'elles existent lorsque la transaction commence, et qu'aucune autre transaction ne peut modifier cet instantané.