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 » Funktionsweise von Sperren

 

Vorzeitige Freigabe von Lesesperren

Auf Isolationsstufe 3 setzt eine Transaktion für jede gelesene Zeile eine Lesesperre. Normalerweise gibt eine Transaktion eine Sperre nicht vor dem Abschluss der Transaktion frei. Für die Serialisierbarkeit eines Schemas ist es wesentlich, dass eine Transaktion Sperren nicht vorzeitig freigibt.

SQL Anywhere hält Schreibsperren immer solange aufrecht, bis die Transaktion abgeschlossen ist. Das verhindert, dass eine andere Transaktion diese Zeile ändert und ein Zurücksetzen der ersten Transaktion unmöglich macht.

Lesesperren werden nur in einer besonderen Situation freigegeben: Auf Isolationsstufe 1 setzen Transaktionen eine Lesesperre für eine Zeile nur, wenn diese zur aktuellen Zeile eines Cursors wird. Auf Isolationsstufe 1 allerdings wird die Sperre freigegeben, sobald die Zeile nicht mehr aktuell ist. Dieses Verhalten kann akzeptiert werden, da der Datenbankserver auf Isolationsstufe 1 keine wiederholbaren Lesevorgänge garantieren muss.

Weitere Hinweise zu Isolationsstufen finden Sie unter Isolationsstufen wählen.