Die Wahl der Isolationsstufe hängt von der Aufgabe ab, die die Anwendung ausführt. Der vorliegende Abschnitt enthält einige Richtlinien für das Auswählen der Isolationsstufen.
Um eine Isolationsstufe auszuwählen, müssen Sie die notwendige Balance zwischen Konsistenz und Fehlerfreiheit einerseits und der Notwendigkeit gleichzeitiger Transaktionen andererseits finden. Wenn eine Transaktion nur einen oder zwei spezifische Werte in einer Tabelle berücksichtigt, ist es unwahrscheinlich, dass sie sich genau so stark mit anderen Prozessen überlagert wie eine Transaktion, die viele große Tabellen durchsucht und deshalb eventuell viele Zeilen oder ganze Tabellen sperrt und sehr lange brauchen kann, bis sie abgeschlossen ist.
Wenn bei Ihren Transaktionen beispielsweise Geld von einem Bankkonto auf ein anderes überwiesen wird, werden Sie sicherstellen wollen, dass die übertragenen Daten korrekt sind. Wenn Sie hingegen nur eine ungefähre Schätzung der Eigenschaften inaktiver Konten abrufen wollen, dann ist es Ihnen womöglich nicht wichtig, ob Ihre Transaktion auf andere wartet oder nicht. Sie sind vielleicht sogar bereit, etwas an Genauigkeit zu opfern, um nicht mit anderen Benutzern der Datenbank zu kollidieren.
Außerdem wirkt sich eine Überweisung vielleicht nur auf die zwei Zeilen aus, die die beiden Kontostände enthalten, während alle Konten gelesen werden müssen, um die grobe Berechnung zu erhalten. Aus diesem Grund ist es unwahrscheinlich, dass die Überweisung andere Transaktionen verzögert.
SQL Anywhere bietet vier Isolationsstufen: 0, 1, 2 und 3. Stufe 3 bedeutet die vollständige Isolation und gewährleistet, dass sich alle Transaktionen so überlappen, dass die Abfolgeplanung serialisierbar ist.
Wenn Sie die Snapshot-Isolation für eine Datenbank aktiviert haben, stehen drei weitere Isolationsstufen zur Verfügung. Snapshot, statement-snapshot und readonly-statement-snapshot.
Die Snapshot-Isolation bietet Vorteile sowohl für die Parallelität als auch für die Konsistenz. Die Verwendung der Snapshot-Isolation hat Kostennachteile, da alte Zeilenversionen so lange aufbewahrt werden, wie sie von laufenden Transaktionen möglicherweise benötigt werden. Snapshots mit langer Ausführungszeit können daher die Speicherung vieler alter Zeilenversionen erfordern. Normalerweise haben Snapshots für statement-snapshot eine kürzere Ausführungszeit als Snapshots für snapshot. Die Stufe statement-snapshot bietet daher möglicherweise Speicherplatzvorteile gegenüber Snapshot, jedoch auf Kosten der Konsistenz (jede Anweisung innerhalb der Transaktion sieht die Datenbank zu einem unterschiedlichen Zeitpunkt).
Weitere Informationen über die Performance-Auswirkungen der Snapshot-Isolation finden Sie unter Cursor-Empfindlichkeit und Isolationsstufen.
Für die meisten Situationen wird die Snapshot-Isolationsstufe empfohlen, da diese eine einzige Ansicht der Datenbank während der gesamten Transaktion bietet.
Die Isolationsstufe statement-snapshot bietet weniger Konsistenz, kann aber in solchen Fällen nützlich sein, in denen lang andauernde Transaktionen dazu führen, dass die Versionsspeicherung in der temporären Datei zu viel Speicherplatz belegt.
Die Isolationsstufe readonly-statement-snapshot bietet weniger Konsistenz als statement-snapshot, verhindert aber, dass es zu Aktualisierungskonflikten kommt. Daher ist sie am besten für die Portierung von Anwendungen geeignet, die ursprünglich dazu gedacht waren, unter anderen Isolationsstufen zu laufen.
Weitere Hinweise zur Snapshot-Isolation finden Sie unter Snapshot-Isolation.
Serialisierbare Abfolgeplanung
Typische Transaktionen für verschiedene Isolationsstufen
Parallelität bei den Isolationsstufen 2 und 3 verbessern
Die Auswirkung der Sperren vermindern
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 |