Zur Gewährleistung der Datenbankkonsistenz und zur Unterstützung der entsprechenden Isolationsstufen zwischen Transaktionen verwendet SQL Anywhere folgende Arten von Sperren:
Schemasperren Diese Sperren kontrollieren die Möglichkeit, Schemaänderungen durchzuführen. Eine Transaktion kann beispielsweise das Schema einer Tabelle sperren und damit andere Transaktionen daran hindern, die Struktur der Tabelle zu ändern.
Zeilensperren Diese Sperren werden benutzt, um die Konsistenz zwischen parallelen Transaktionen auf Zeilenebene zu gewährleisten. Eine Transaktion kann beispielsweise eine bestimmte Zeile sperren, um zu verhindern, dass die Zeile durch eine andere Transaktion geändert wird, und eine Transaktion muss eine Schreibsperre auf eine Zeile setzen, wenn sie beabsichtigt, die Zeile zu ändern.
Tabellensperren Diese Sperren werden benutzt, um die Konsistenz zwischen parallelen Transaktionen auf Tabellenebene zu gewährleisten. Beispielsweise kann eine Transaktion, welche die Struktur einer Tabelle durch Einfügen einer neuen Spalte ändert, diese Tabelle sperren, sodass andere Transaktionen durch die Schemaänderung nicht beeinflusst werden. In einem solchen Fall ist es besonders wichtig, dass andere Transaktionen am Zugriff gehindert werden, damit keine Fehler auftreten.
Positionssperren Diese Sperren werden benutzt, um die Konsistenz innerhalb eines sequenziellen oder indexierten Table Scans zu gewährleisten. Transaktionen suchen normalerweise Zeilen sequenziell oder in der Reihenfolge ab, die von einem Index vorgeschrieben wird. In beiden Fällen kann eine Sperre auf die Suchposition gesetzt werden. Beispiel:Wenn in einem Index eine Sperre gesetzt wird, kann damit verhindert werden, dass eine andere Transaktion eine Zeile mit einem bestimmten Wert oder Wertbereich einfügt.
Schemasperren bieten einen Mechanismus, der verhindert, dass sich Schemaänderungen unbeabsichtigt auf aktive Transaktionen auswirken. Zeilensperren, Tabellensperren und Positionssperren haben jeweils separate Zwecke, aber sie beeinflussen sich gegenseitig. Jeder Sperrentyp verhindert bestimmte Inkonsistenzen. Je nach der gewählten Isolationsstufe verwendet der Datenbankserver einige oder alle Sperrentypen, um das erforderliche Maß an Konsistenz aufrecht zu halten.
Die verschiedenen Sperrenklassen können für verschiedene Zeiträume aufrechterhalten werden:
Position Positionssperren sind kurzfristige Sperren, beispielsweise Lesesperren für bestimmte Zeilen, mit denen die Cursorstabilität auf Isolationsstufe 1 gewährleistet wird.
Transaktion Transaktionssperren sind Zeilen-, Tabellen- oder Positionssperren, die bis zum Ende einer Transaktion bestehen bleiben.
Verbindung Verbindungssperren sind Schemasperren, die über das Ende einer Transaktion hinaus bestehen bleiben, wie etwa Schemasperren, die erstellt werden, wenn Cursors des Typs WITH HOLD benutzt werden.
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |