Transaktionssicherung aktivieren
Zugehörigkeit
Untergeordnete DBH-Option zu SYSTEM-STRATEGIES
Funktionsbeschreibung
Die Transaktionssicherung koordiniert konkurrierende Datenbankzugriffe. Im Fehlerfall gewährleistet sie über Rücksetzmechanismen die Konsistenz der Datenbestände.
Jede DBH-Session läuft mit Transaktionssicherung.
Mit der DBH-Option TRANSACTION-SECURITY können Sie die Rücksetzkriterien für sperrende Transaktionen modifizieren und der jeweiligen DBH-Session anpassen.
Sie können die Operanden LOCK-TIME, INACTIVITY-TIME und LOCK-ESCALATION während der DBH-Session mit der Administrationsanweisung MODIFY-TRANSACTION-SECURITY (siehe "MODIFY-TRANSACTION-SECURITY") ändern.
Den Operanden MAX-ISOLATION-LEVEL können Sie mit der Administrationsanweisung RECONFIGURE-DBH-SESSION (siehe "RECONFIGURE-DBH-SESSION") während der DBH-Session ändern.
TRANSACTION-SECURITY | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
1Der Wert TRANSACTION-SECURITY = *NO von SESAM/SQL < V7.0 kann aus Kompatibilitätsgründen noch angegeben werden. Er wird aber ignoriert. Es wird eine Warnung ausgegeben. TRANSACTION-SECURITY = *YES(...) wird stets verwendet.
Operandenbeschreibung
TRANSACTION-SECURITY = *YES(...)
Der DBH arbeitet stets mit Transaktionssicherung.
LOCK-TIME = 4 / <integer 1..999>
Legt fest, nach wievielen Minuten eine Transaktion zurückgesetzt werden soll, wenn sie selbst untätig ist, aber andere Transaktionen sperrt. Der Standardwert für LOCK-TIME beträgt 4 Minuten.
INACTIVITY-TIME = *STD / <integer 1..999>
Legt fest, nach wievielen Minuten eine offene, aber untätige Transaktion zurückgesetzt werden soll. Der Wert für INACTIVITY-TIME muss größer oder gleich dem LOCK-TIME-Wert sein. Der Standardwert beträgt 10 x LOCK-TIME-Wert.
MAX-ISOLATION-LEVEL = *STD / *REPEATABLE-READ
Der maximale Isolationslevel beim Zugriff auf Benutzertabellen wird festgelegt. Bei Angabe von *STD erfolgt der Zugriff unter dem Isolationslevel SERIALIZABLE.
Wenn Sie den Wert *REPEATABLE-READ angegeben haben, werden in der DBH-Session alle Versuche von Anwendungen, unter dem Isolationslevel SERIALIZABLE auf Daten zuzugreifen, mit SQLSTATE abgewiesen.
Bei der Angabe *REPEATABLE-READ werden vom DBH keine Transaktionssperren auf Indexwerte benutzt, solange es sich nicht um einen Unique-Index bzw. einen Index einer Referenzbedingung handelt.
Wenn eine SQL-Anwendung mit einem DBH arbeiten soll, bei dem für MAX-ISOLATION-LEVEL der Wert *REPEATABLE-READ angegeben ist, so müssen Sie entweder in der Anwendung vor jeder Transaktion ein SET TRANSACTION ausführen oder in der Anwenderkonfigurationsdatei die Option ISOL-LEVEL=REPEATABLE-READ setzen.
LOCK-ESCALATION =
Bestimmt das Verhalten gegenüber Transaktionssperren. Wird eine festgelegte Anzahl an gesperrten Werten in einem Index bzw. an gesperrten Sätzen in einer Tabelle überschritten, so versucht SESAM/SQL den gesamten Index bzw. die gesamte Tabelle zu sperren. Dies wird als Eskalation der Sperren bezeichnet.
Eine Änderung der Einstellungen für LOCK-ESCALATION kann deutlich das Verhalten des DBHs bezüglich Speicherbedarf und der Wahrscheinlichkeit von Transaktionskonflikten beeinflussen:
Werden niedrige Werte gewählt, so wird sehr früh versucht, die ganze Tabelle bzw. den Index zu sperren. Dies spart Speicherplatz, da die Sperren nicht einzeln verwaltet werden müssen. Allerdings vergrößert sich die Wahrscheinlichkeit für Transaktionskonflikte.
Höhere Werte vermindern das Risiko für Transaktionskonflikte. In diesem Fall vergrößert sich allerdings der Speicherbedarf, da die Sperren einzeln verwaltet werden müssen.
Aus dem Anteil PERCENTAGE-RECORDS wird die aktuelle Anzahl der Sätze, ab der die ganze Tabelle gesperrt werden soll, ermittelt und mit der Anzahl NUMBER-RECORDS verglichen. Der kleinere Wert wird als Grenze verwendet.
Gelingt die Eskalation einer Sperre nicht sofort, so wird zunächst nur der direkt betroffene Satz bzw. der Indexwert gesperrt. Nach diesem erfolglosen Eskalationsversuch wird der nächste Versuch erst nach weiteren 100 Sperren gestartet.
LOCK-ESCALATION = *STD
Es gelten die Standardwerte der Escalation-Operanden, die unter *PARAMETERS(...) beschrieben sind.
LOCK-ESCALATION = *PARAMETERS(...)
NUMBER-RECORDS = 4000 / <integer 1..2147483647>
Legt die Anzahl der Sätze in einer Tabelle fest, die ein Auftraggeber sperren kann. Werden mehr Sätze gesperrt, so wird versucht, die ganze Tabelle zu sperren.
PERCENTAGE-RECORDS = 50 / <integer 0..100>
Legt den Anteil der Sätze an allen Sätzen der Tabelle fest, die ein Auftraggeber sperren kann. Wird ein größerer Anteil gesperrt, so wird versucht, alle Sätze der Tabelle zu sperren. Wird für den Anteil 0 gewählt, so wird immer sofort versucht, die gesamte Tabelle zu sperren.
NUMBER-INDEX-VALUES = 1000 / <integer 1..2147483647>
Legt die Anzahl der Werte fest, die ein Auftraggeber in einem Index sperren kann. Wird eine größere Anzahl gesperrt, wird versucht statt einzelner Werte den gesamten Index zu sperren.