Isolation (informatique)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 concurrenceL'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'isolationUne mauvaise isolation des transactions peut essentiellement causer quatre problèmes :
Niveaux d'isolationCertains 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 :
SerializableNiveau 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 readsNiveau 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 committedNiveau 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 uncommittedNiveau d'isolation le plus bas. Il n'impose pas de lever les verrous à la fin de la transaction.
Voir aussiRéférences
|