Qu'est-ce que l'isolement instantané?
L'isolation de capture instantanée est une propriété du traitement des transactions et des bases de données garantissant que toutes les lectures effectuées dans une transaction voient la même base de données "capture instantanée". Cela signifie que la transaction s'engagera à traiter correctement la demande si ses mises à jour ne sont pas en conflit avec d'autres mises à jour simultanées. L'isolation d'instantané est un algorithme de contrôle pour la simultanéité multi-version qui fournit des niveaux d'isolation évitant les problèmes courants liés à la simultanéité. Cette isolation a été mise en œuvre par plusieurs serveurs SQL (Structured Query Language) différents, fonctionnant avec un minimum d'anomalies de sérialisation. Les isolations d'instantanés ne garantissent toutefois pas une sérialisation complète sur un serveur.
De nombreux grands systèmes de gestion de données contiennent des niveaux d'isolation par défaut non sérialisables et rencontrent souvent des anomalies de sérialisation sans isolation instantanée. Cela peut entraîner chaque jour de nombreuses erreurs d'isolement dans les grands systèmes, ce qui peut entraîner la corruption des données, en particulier celles rencontrées dans les applications de stockage en entrepôt. La raison pour laquelle un système peut fonctionner dans cet état est que les applications qui s'exécutent sur des niveaux d'isolement inférieurs peuvent améliorer l'efficacité si aucune erreur grave ne se produit. L'inclusion de l'isolement d'instantanés dans un système réduit ces anomalies et augmente encore l'efficacité lorsque vous prenez en compte le temps de fonctionnement et le nombre d'erreurs qui se produisent.
Certaines bases de données offrent une isolation par image instantanée par opposition à une sérialisabilité complète, mais des anomalies peuvent également se produire dans une base de données utilisant ce type d'isolation. Ces anomalies peuvent entraîner des violations de la cohérence des données car des transactions qui maintiennent la cohérence s'entrelacent ou sont organisées en couches alternées. L'un des moyens de résoudre le problème et d'éviter de telles anomalies consiste à manipuler les applications en introduisant des verrous artificiels et des mises à jour contradictoires, suivies d'une analyse des conflits entre chaque paire de transactions. Une autre façon de résoudre ces anomalies consiste toutefois à modifier les algorithmes du contrôle de simultanéité d'un système de base de données pour effectuer des détections et des préventions automatiques des anomalies d'isolement d'instantanés au moment de l'exécution. Cela peut être fait pour des applications importantes ou arbitraires, mais fournit une isolation sérialisable.
Les serveurs SQL les plus récents ont été en mesure d'introduire de nouveaux niveaux d'isolation ainsi que de nouveaux niveaux d'isolation de capture instantanée pour l'amélioration de la simultanéité dans certaines applications. Là où les premières versions du serveur SQL utilisaient le verrouillage comme base de la concurrence, l'isolation des instantanés dépend des améliorations apportées à la gestion des versions de lignes afin d'améliorer les performances. Il améliore ces performances lorsqu'il évite des scénarios de blocage en lecture ou en écriture.