Wenn zwei Transaktionen eine Lesesperre für die gleiche Zeile gesetzt haben, hängt das Verhalten bei dem Versuch einer der Transaktionen, diese Zeile zu ändern, von der Einstellung der Datenbankoption "blocking" ab. Um diese Zeile zu ändern, muss die Transaktion die andere blockieren. Das kann sie aber nicht, solange die andere Transaktion die Zeile blockiert hat.
Wenn die Option "blocking" auf "On" gesetzt ist (die Standardeinstellung), dann wartet die Transaktion, die einen Schreibvorgang vornehmen will, bis die andere Transaktion ihre Lesesperre freigegeben hat. Erst danach erfolgt der Schreibvorgang.
Wenn die Option "blocking" auf "Off" gesetzt ist, erhält die Anweisung, die einen Schreibvorgang versucht, eine Fehlermeldung.
Wenn die Option "blocking" auf "Off" gesetzt ist, wird die Anweisung beendet, statt angehalten, und partiell durchgeführte Änderungen werden zurückgesetzt. In diesem Fall versuchen Sie, die Transaktion später noch einmal auszuführen.
Blockierungen sind häufiger bei höheren Isolationsstufen festzustellen, da dort eine größere Anzahl von Sperren und Überprüfungen durchgeführt wird. Höhere Isolationsstufen ergeben gewöhnlich weniger Parallelität. Wie viel weniger dies ist, hängt von der jeweiligen Art der gleichzeitig ablaufenden Transaktionen ab.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |