Angenommen, Daten in einer Enterprise-Geodatabase werden von einer Transaktion in einem Programm aktualisiert, doch bevor die Transaktion festgeschrieben wird, liest ein anderes Programm genau diese Daten. Werden von dem zweiten Programm die neuen, jedoch nicht festgeschriebenen Daten gelesen oder die alten Daten? Die Antwort hängt vom Isolationsgrad der Transaktion ab.
Wenn die Transaktion zulässt, dass andere Programme nicht festgeschriebene Daten lesen, werden vom zweiten Programm die aktualisierten Daten gelesen. Dadurch kann sich die Performance erhöhen, da das zweite Programm nicht auf das Ende der Transaktion warten muss, um die Daten zu lesen. Es gibt jedoch auch einen Nachteil: Wenn das zweite Programm Daten liest, die noch nicht endgültig festgeschrieben wurden, muss es entweder falsche Daten oder nicht vorhandene Daten lesen.
Damit Benutzer selbst entscheiden können, welche Methode sich für ihre Anwendung eignet, stellen DBMS Isolationsgrade bereit, mit denen definiert wird, wie nachfolgende Prozesse von anderen gleichzeitig ausgeführten Prozessen isoliert werden sollen. Isolationsgrade können vom Datenbankadministrator festgelegt und auf alle Transaktionen in der Datenbank angewendet werden. Außerdem können sie in einer Anwendung oder vor einer einzelnen Transaktion festgelegt werden. Isolationsgrade geben Folgendes an:
- Der Grad, bis zu dem die von der Anwendung gelesenen und aktualisierten Zeilen für andere gleichzeitig ausgeführte Prozesse verfügbar sind.
- Der Grad, bis zu dem Aktualisierungen von anderen gleichzeitig ausgeführten Anwendungsprozessen für die Anwendung verfügbar sind.
DBMS ermöglichen es, einen von vier Isolationsgraden festzulegen. Diese werden im Folgenden vom niedrigsten zum höchsten Isolationsgrad geordnet aufgelistet. Die Funktionen jeder Ebene werden zu den Funktionen der vorherigen Ebene hinzugefügt. Höhere Isolationsgrade bieten ein größeres Maß an Datenintegrität, dies geht jedoch zu Lasten einer geringeren Parallelität, da Sperren länger gehalten werden.
UNCOMMITTED READ: Diese Einstellung ermöglicht eine minimale Isolation gleichzeitig ablaufender Transaktionen. Daten, die durch gleichzeitig ablaufende Transaktionen geändert wurden, können durch die Transaktion bereits gelesen werden, bevor sie festgeschrieben wurden.
COMMITTED READ: Es werden nur festgeschriebene Daten gelesen, keine nicht festgeschriebenen Daten.
REPEATABLE READ: Platziert eine weitere Einschränkung, die angewendet wird, wenn dieselben Zeilen während der Transaktion mehrere Male gelesen werden. Dadurch wird sichergestellt, dass mehrmals nacheinander gelesene Zeilen stets unverändert bleiben.
SERIALIZABLE: Dieser Isolationsgrad bietet den höchsten Grad an Isolation von gleichzeitig ablaufenden Transaktionen. Alle Lesevorgänge in der Transaktion sehen nur Daten, die durchgeführt wurden, bevor die Transaktion begann, und nie gleichzeitig ablaufende Transaktionsänderungen, die während der Transaktionsdurchführung verübt wurden.
Das DBMS bezieht sich möglicherweise durch andere Namen darauf. Jeder Grad hat eine ähnliche Funktionsweise in den DBMS, es gibt jedoch wichtige Unterschiede. Um Fehler beim Anwendungs- und Workflow-Aufbau zu vermeiden, machen Sie sich gut damit vertraut, wie sich die Isolationsgrade auf Sperren und Parallelität in Ihrem DBMS auswirken. Weitere Informationen finden Sie in der Dokumentation zur Datenbank.
Informationen dazu, inwieweit Isolationsgrade für ArcGIS gelten und welche Probleme hinsichtlich Parallelität auftreten können, finden Sie unter Nebenläufigkeit und Sperren.