Was ist Snapshot-Isolation?
Die Snapshot-Isolation ist eine Eigenschaft in der Transaktionsverarbeitung und in Datenbanken, die garantiert, dass alle Lesevorgänge in einer Transaktion denselben Datenbank-Snapshot sehen. Dies bedeutet, dass sich die Transaktion verpflichtet, die Anforderung erfolgreich zu verarbeiten, wenn ihre Aktualisierungen nicht mit anderen gleichzeitigen Aktualisierungen in Konflikt stehen. Die Snapshot-Isolation ist ein Steuerungsalgorithmus für die gleichzeitige Verwendung mehrerer Versionen, der Isolationsstufen bereitstellt, mit denen die bei der gleichzeitigen Verwendung häufig auftretenden Probleme vermieden werden. Diese Isolation wurde von mehreren SQL-Servern (Structured Query Language) implementiert, die mit minimalen Serialisierungsanomalien arbeiten. Snapshot-Isolationen garantieren jedoch keine vollständige Serialisierbarkeit auf einem Server.
Viele gängige Datenverwaltungssysteme enthalten Standardisolationsstufen, die nicht serialisierbar sind und häufig Serialisierungsanomalien ohne Snapshot-Isolation aufweisen. Dies kann dazu führen, dass bei großen Systemen jeden Tag zahlreiche Isolationsfehler auftreten, die zur Beschädigung von Daten führen können, insbesondere derjenigen, die in Warehouse-Anwendungen von Daten gefunden werden. Der Grund, warum ein System in diesem Status möglicherweise ausgeführt wird, liegt darin, dass Anwendungen mit niedrigeren Isolationsstufen die Effizienz verbessern können, wenn keine schwerwiegenden Fehler auftreten. Durch die Integration der Snapshot-Isolation in ein System werden diese Anomalien reduziert und - unter Berücksichtigung der Betriebszeit und der Anzahl der auftretenden Fehler - die Effizienz weiter gesteigert.
Einige Datenbanken bieten eine Snapshot-Isolation im Gegensatz zur vollständigen Serialisierbarkeit. Es gibt jedoch auch Anomalien, die in einer Datenbank auftreten können, die diese Art der Isolation verwendet. Diese Anomalien können zu Verstößen gegen die Datenkonsistenz führen, da Transaktionen, die die Konsistenz aufrechterhalten, verschachtelt oder in abwechselnden Schichten angeordnet sind. Die eine Möglichkeit, das Problem zu beheben und Anomalien wie diese zu vermeiden, besteht darin, Anwendungen durch Einführung künstlicher Sperren und widersprüchlicher Aktualisierungen zu manipulieren. Anschließend werden die Konflikte zwischen den einzelnen Transaktionspaaren analysiert. Eine andere Möglichkeit, diese Anomalien zu beheben, besteht darin, die Algorithmen der Parallelitätssteuerung eines Datenbanksystems so zu ändern, dass sie zur Laufzeit automatisch Anomalien der Snapshot-Isolation erkennen und verhindern. Dies kann für wichtige oder beliebige Anwendungen erfolgen, bietet jedoch eine serialisierbare Isolation.
Neuere SQL Server konnten sowohl neue Isolationsstufen als auch neue Isolationsstufen für Momentaufnahmen einführen, um die Parallelität in bestimmten Anwendungen zu verbessern. Während frühere Versionen des SQL-Servers das Sperren als Grundlage für den gemeinsamen Zugriff verwendeten, ist die Snapshot-Isolation von Verbesserungen der Zeilenversionierung abhängig, die zur Verbesserung der Leistung gedacht sind. Es verbessert diese Leistung, wenn es auf Szenarien mit Lese- oder Schreibblockierung stößt, indem es diese vermeidet.