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 - Programmierung » SQL in Anwendungen verwenden » SQL Anywhere-Cursor

 

Cursor-Sensitivität und Isolationsstufen

Sowohl die Cursor-Sensitivität als auch die Isolationsstufen beziehen sich auf die Kontrolle der Parallelität, jedoch auf unterschiedliche Weise und mit verschiedenen Vor- und Nachteilen.

Indem Sie eine Isolationsstufe für eine Transaktion auswählen (gewöhnlich auf der Verbindungsebene), legen Sie fest, welche Typen von Sperren wann auf Zeilen in der Datenbank plaziert werden. Sperren verhindern, dass andere Transaktionen auf die Zeilen in der Datenbank zugreifen oder sie verändern. Im Allgemeinen ist bei einer größeren Zahl von Sperren ein geringerer Umfang von Parallelität bei gleichzeitigen Transaktionen zu erwarten.

Sperren verhindern jedoch nicht, dass andere Teile einer Transaktion ausgeführt werden. Daher kann eine einzelne Transaktion, die mehrere aktualisierbare Cursor verwaltet, nicht mithilfe von Sperren verhindern, dass es zu Aktualisierungsverlusten kommt.

Mithilfe der Snapshot-Isolation soll erreicht werden, dass keine Lesesperren erforderlich sind, indem dafür gesorgt wird, dass jede Transaktion eine konsistente Ansicht der Datenbank erhält. Der Vorteil besteht darin, dass eine konsistente Ansicht der Datenbank abgefragt werden kann, ohne sich auf vollständige serialisierbare Transaktionen (Isolationsstufe 3) zu verlassen und ohne den Verlust der Parallelität, der durch die Verwendung der Isolationsstufe 3 entsteht. Die Snapshot-Isolation ist jedoch sehr teuer, da Kopien geänderter Zeilen verwaltet werden müssen, um die Anforderungen der gleichzeitigen Snapshot-Transaktionen, die bereits ausgeführt werden, und die Snapshot-Transaktionen, die noch starten müssen, zu erfüllen. Aufgrund dieser Kopienverwaltung ist die Verwendung der Snapshot-Isolation für intensive Aktualisierungsvorgänge ungeeignet. Siehe Snapshot-Isolationsstufe wählen.

Die Cursor-Sensitivität legt andererseits fest, welche Änderungen für das Ergebnis des Cursors sichtbar sind. Da die Cursor-Sensitivität auf Cursor-Basis festgelegt wird, bezieht sich die Cursor-Sensitivität sowohl auf die Auswirkungen auf andere Transaktionen als auch auf die Aktualisierungsaktivität derselben Transaktion, wenngleich diese Auswirkungen vollständig vom Typ des festgelegten Cursors abhängen. Durch das Festlegen der Cursor-Sensitivität legen Sie nicht direkt fest, wann Sperren für Zeilen in der Datenbank erworben werden. Die Kombination der Cursor-Sensitivität und der Isolationsstufe steuert jedoch die verschiedenen Parallelitätsszenarien, die in einer bestimmten Anwendung möglich sind.