Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Transaktionen und Isolationsstufen verwenden » Isolationsstufen und Konsistenz » Snapshot-Isolation

 

Snapshot-Isolation aktivieren

Die Snapshot-Isolation wird mit der Option "allow_snapshot_isolation" für eine Datenbank aktiviert oder deaktiviert. Wenn die Option auf "On" gesetzt ist, werden die Zeilenversionen in der temporären Datei aufbewahrt und die Verbindungen können jede der Snapshot-Isolationsstufen benutzen. Wenn die Option auf "Off" gesetzt ist, führt jeder Versuch, die Snapshot-Isolation zu verwenden, zu einem Fehler.

Wenn es einer Datenbank ermöglicht wird, die Snapshot-Isolation zu verwenden, kann sich dies auf die Performance auswirken, da Kopien aller geänderten Zeilen aufbewahrt werden müssen, unabhängig von der Anzahl der Transaktionen, welche die Snapshot-Isolation verwenden. Siehe Cursor-Sensitivität und Isolationsstufen.

Die folgende Anweisung aktiviert die Snapshot-Isolation für eine Datenbank:

SET OPTION PUBLIC.allow_snapshot_isolation = 'On';

Die Einstellung der Option "allow_snapshot_isolation" kann geändert werden, auch wenn Benutzer mit der Datenbank verbunden sind. Wenn Sie die Einstellung dieser Option von "Off" auf "On" ändern, müssen alle laufenden Transaktionen abgeschlossen werden, bevor neue Transaktionen die Snapshot-Isolation benutzen können. Wenn Sie die Einstellung dieser Option von "On" auf "Off" ändern, müssen alle noch ausstehenden Transaktionen, welche die Snapshot-Isolation benutzen, abgeschlossen werden, bevor der Datenbankserver die Aufbewahrung von Zeilenversionsinformationen beendet.

Sie zeigen die aktuelle Einstellung der Snapshot-Isolation einer Datenbank an, indem Sie den Wert der Datenbankeigenschaft SnapshotIsolationState abfragen:

SELECT DB_PROPERTY ( 'SnapshotIsolationState' );

Die SnapshotIsolationState-Eigenschaft hat einen der folgenden Werte:

  • On   Snapshot-Isolation ist für die Datenbank aktiviert.

  • Off   Snapshot-Isolation ist für die Datenbank deaktiviert.

  • in_transition_to_on   Snapshot-Isolation wird aktiviert, sobald die aktuellen Transaktionen abgeschlossen sind.

  • in_transition_to_off   Snapshot-Isolation wird deaktiviert, sobald die aktuellen Transaktionen abgeschlossen sind.

Wenn die Snapshot-Isolation für eine Datenbank aktiviert ist, müssen die Zeilenversionen für eine Transaktion aufbewahrt werden, bis die Transaktion festgeschrieben oder zurückgesetzt wird, auch dann, wenn keine Snapshots verwendet werden. Es ist daher am besten, die Option "allow_snapshot_isolation" auf "Off" zu setzen, wenn die Snapshot-Isolation nie benutzt wird.