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

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Datenbanken erstellen » Transaktionen und Isolationsstufen verwenden » Isolationsstufen und Konsistenz » Isolationsstufe von einer für ODBC aktivierten Anwendung aus einstellen

 

Isolationsstufen während einer Transaktion ändern

Verschiedene Isolationsstufen können für verschiedene Teile einer einzelnen Transaktion geeignet sein. SQL Anywhere gibt Ihnen die Möglichkeit, die Isolationsstufe Ihrer Datenbank während einer Transaktion zu ändern.

Wenn Sie die Option "isolation_level" während einer Transaktion ändern, wirkt sich die neue Einstellung nur auf die folgenden Elemente aus:

  • Auf Cursor, die nach der Änderung geöffnet werden.

  • Auf Anweisungen, die nach der Änderung ausgeführt werden.

Es kann sinnvoll sein, die Isolationsstufe während einer Transaktion zu ändern, um zu steuern, wie viele Sperren Ihre Transaktion setzt. Es kann auch sein, dass eine Transaktion eine umfangreiche Tabelle lesen muss, sich im Detail aber nur mit wenigen Zeilen befasst. Wenn sich eine Inkonsistenz nicht ernsthaft auf Ihre Transaktion auswirkt, sollten Sie eine niedrige Isolationsstufe einstellen, während Sie eine große Tabelle lesen, damit Sie nicht die Arbeit von anderen Benutzern verzögern.

Außerdem empfiehlt es sich in gewissen Fällen, die Isolationsstufe während der Transaktion zu ändern, wenn zum Beispiel nur eine Tabelle oder Gruppe von Tabellen einen serialisierten Zugriff erfordert.

Ein Beispiel, bei dem die Isolationsstufe während einer Transaktion geändert wird, finden Sie unter Praktische Einführung: Phantomzeilen.

Hinweis

Sie können auch die Isolationsstufe (nur Stufen 0 bis 3) mit Tabellen-Hints festlegen, aber dies ist eine erweiterte Funktion, die nur bei Bedarf verwendet werden sollte. Weitere Informationen finden Sie im Abschnitt zum WITH Tabellen_Hint unter FROM-Klausel.

Isolationsstufen ändern, wenn die Snapshot-Isolation benutzt wird

Wenn Sie die Snapshot-Isolation verwenden, können Sie die Isolationsstufe innerhalb einer Transaktion ändern. Sie können dies durchführen, indem Sie die Einstellung der Option "isolation_level" ändern oder indem Sie Tabellen-Hints benutzen, die sich auf die Isolationsstufe in einer Abfrage auswirken. Sie können jederzeit die Stufen statement-snapshot, readonly-statement-snapshot sowie die Isolationsstufen 0 bis 3 verwenden. Sie können die Snapshot-Isolationsstufe jedoch nicht in einer Transaktion benutzen, wenn sie auf einer anderen Isolationsstufe begann als "Snapshot". Eine Transaktion wird durch eine Aktualisierung initialisiert und dauert bis zum nächsten COMMIT oder ROLLBACK an. Falls die erste Aktualisierung auf einer anderen Isolationsstufe als "Snapshot" stattfindet, liefert jede Anweisung, die versucht, die Snapshot-Isolationsstufe zu benutzen, bevor die Transaktion festgeschrieben oder zurückgesetzt wird, den Fehler "-1065 NON_SNAPSHOT_TRANSACTION". Zum Beispiel:

SET OPTION PUBLIC.allow_snapshot_isolation = 'On';

BEGIN TRANSACTION
    SET OPTION isolation_level = 3;
    INSERT INTO Departments
        ( DepartmentID, DepartmentName, DepartmentHeadID )
        VALUES( 700, 'Foreign Sales', 129 );
    SET TEMPORARY OPTION isolation_level = 'snapshot';
    SELECT * FROM Departments;