Isolation (informatique)

Pour les articles homonymes, voir Isolation.

Cet article est une ébauche concernant l’informatique.

Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.

Dans les systèmes de gestion de base de données (SGBD), l'isolation est la capacité d'un système d'isoler les modifications dans une transaction en cours de celles faites dans les autres transactions conduites simultanément, jusqu'à ce qu'elle soit complétée. C'est l'une des quatre propriétés ACID d'une base de données.

## Contrôle de concurrence

[modifier | modifier le code]

L'isolation des transactions d'une base données est assurée par son moteur de stockage, par un contrôle de concurrence entre elles.

Le système le plus commun de contrôle de concurrence est le verrouillage à deux phases, ou 2PL (dans l'anglais two-phase locking), qui est composé de deux phases consécutives : la pose de verrous et leurs retraits[1].

## Problèmes d'isolation

[modifier | modifier le code]

Une mauvaise isolation des transactions peut essentiellement causer quatre problèmes :

1. Lecture fantôme : les données recherchées par une transaction selon une condition diffèrent entre deux recherches (à la suite de leurs mises à jour par d'autres transactions).
2. Lecture non reproductible : les lectures répétées des données donnent des résultats différents.
3. Lecture sale : les données d'une transaction non terminée (donc annulables) sont lues par une autre transaction (qui les considère comme définitives).
4. Mise à jour perdue : deux transactions modifient le même enregistrement en parallèle, sans tenir compte l'une de l'autre (donc une sera écrasée et n'aura aucun effet).

## Niveaux d'isolation

[modifier | modifier le code]

Certains SGDB définissent plusieurs niveaux d'isolation de façon à pouvoir paramétrer le nombre de verrouillages des transactions, et ainsi influer sur leur performance et leur fiabilité. En effet, plus il y aura de verrouillages, et plus le risque d'interblocage sera élevé.

La norme ANSI/ISO SQL reconnait les quatre niveaux suivants :

Le "+" représente la protection contre les erreurs d'isolation  Niveau d'isolation  | Lecture fantôme  | Lecture non reproductible  | Lecture sale  | Mise à jour perdue

|
|
|
|

SERIALIZABLE  | \+  | \+  | \+  | \+
REPEATABLE READ  | \-  | \+  | \+  | \+
READ COMMITTED  | \-  | \-  | \+  | \+
READ UNCOMMITTED  | \-  | \-  | \-  | \+
NULL  | \-  | \-  | \-  | \-

### Serializable

[modifier | modifier le code]

Niveau d'isolation le plus élevé.

Il impose aux verrous de lecture et d'écriture d'être levés à la fin de la transaction, avec en plus un verrouillage d'étendues de clés (range-lock)[2].

### Repeatable reads

[modifier | modifier le code]

Niveau d'isolation par défaut avec InnoDB[3] (un des moteurs MySQL).

Il impose aux verrous de lecture et d'écriture d'être levés à la fin de la transaction, mais sans verrouillage d'étendues de clés.

### Read committed

[modifier | modifier le code]

Niveau d'isolation par défaut sur Oracle Database[4], SQL Server[5] et PostgreSQL[6].

Il impose juste aux verrous d'écriture d'être levés à la fin de la transaction.

### Read uncommitted

[modifier | modifier le code]

Niveau d'isolation le plus bas.

Il n'impose pas de lever les verrous à la fin de la transaction.

Par ailleurs, sur Oracle Database, il existe un cinquième niveau intitulé READ ONLY[4].

## Voir aussi

[modifier | modifier le code]

* Théorie de l'ordonnancement

## Références

[modifier | modifier le code]

1. ↑ [vidéo] « Concurrence - Verrouillage à deux phases », à 7m36s, Serge Abiteboul, 18 novembre 2014, Wandida, EPFL
2. ↑ « Verrouillage d'étendues de clés », sur microsoft.com (consulté le 8 avril 2023).
3. ↑ (en) « MySQL :  : MySQL 5.7 Reference Manual :  : 14.7.2.1 Transaction Isolation… », sur mysql.com (consulté le 8 avril 2023).
4. ↑ a et b http://www.oracle.com/technetwork/testcontent/o65asktom-082389.html, 2005
5. ↑ Understanding the Available Transaction Isolation Levels, SQL Server 2005
6. ↑ (en) « Transaction Isolation », sur PostgreSQL Documentation, 27 octobre 2016 (consulté le 8 avril 2023).

* Portail de l’informatique
* Portail des bases de données

*[[vidéo]]: Vidéo au format MPEG, AVI...
*[(en)]: Langue : anglais