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ééTx1
et Tx2
:
Dirty read
: se produit lorsqueTx1
modifie un élément, puis queTx2
lit cet élément avant queTx1
n'ait validé la modification. Ensuite, siTx1
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 lorsqueTx1
lit un élément, puis queTx2
modifie ou supprime cet élément et valide la modification, et queTx1
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 lorsqueTx1
lit un ensemble d'éléments qui répondent à un critère de recherche, puis queTx2
ajoute un nouvel élément qui répond au critère de recherche et queTx1
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é.