DB2-Initialisierungsparameter
Für die Arbeit mit ArcSDE-Geodatabases werden häufig die folgenden Parameter für DB2 geändert:
Parameter, die Sperren beeinflussen
Deadlocks kommen, je nach Client-Anwendung und Datenbankkonfiguration, nicht selten vor. Beachten Sie, dass das Problem durch stark verzweigte State-Lineages verschärft werden kann. DB2 stellt erfreulicherweise Optimierungsparameter zur Verfügung, mit denen die Größe der Sperrliste (LOCKLIST), der Höchstprozentsatz an Sperren in einer Anwendung (MAXLOCKS), die Zeit, die eine Anforderung auf eine Sperre wartet (LOCKTIMEOUT), das Häufigkeitsintervall für die Erkennung von Deadlocks (DLCHKTIME) und das Deadlock-Rollback-Verhalten (DB2LOCK_TO_RB) gesteuert werden können.
Der Standardwert für LOCKLIST und MAXLOCKS in DB2 9 lautet AUTOMATIC. Dieser Wert aktiviert diese Parameter für die automatische Optimierung. So kann die DB2-Speicheroptimierung die Größe der Speicherressourcen unter verschiedenen Speicherkonsumenten dynamisch aufteilen. Die automatische Optimierung findet nur statt, wenn die automatische Optimierung des Speichers für die Datenbank aktiviert wird (SELF_TUNING_MEM=ON).
Um die Einstellungen der Sperrliste anzuzeigen, geben Sie den folgenden Befehl ein:
db2 get db cfg Max storage for lock list (4KB) (LOCKLIST) = 50 Interval for checking deadlock (ms) (DLCHKTIME) = 10000 Percent. of lock lists per application (MAXLOCKS) = 22 Lock time out (sec) (LOCKTIMEOUT) = -1 Max number of active applications (MAXAPPLS) = AUTOMATIC
Verwenden Sie "db2set" für den Registrierungswert DB2LOCK_TO_RB, und suchen Sie nach DB2LOCK_TO_RB=.
-
"LOCKLIST" und "MAXLOCKS"
Um die Kapazität der Sperrliste bzw. des Grenzwertes für die Sperr-Eskalation zu erhöhen, ändern Sie die Parameter LOCKLIST bzw. MAXLOCKS. So legen Sie LOCKLIST für DB2 8 fest:
- Schätzen Sie die maximale Anzahl an aktiven Anwendungen ("MAXAPPLS", falls festgelegt).
- Schätzen Sie die durchschnittliche Anzahl an Sperren pro Anwendung.
- Schätzen Sie den niedrigsten und den höchsten Wert für die Sperrlistengröße:
(Avg # locks per application * 36 * MAXAPPLS) / 4096 (Avg # locks per application * 72 * MAXAPPLS) / 4096
wobei 72 = Anzahl Byte der ersten Sperre im Objekt 36 = Anzahl Byte der zusätzlichen Sperren im Objekt
- Legen Sie "LOCKLIST" zunächst auf einen beliebigen Wert zwischen dem oberen und dem unteren Grenzwert fest.
Beispiele:
db2 update db cfg using LOCKLIST 200
- Bestimmen Sie den Prozentsatz an Sperrlisten, die jede einzelne Anwendung verkraften kann, bevor es zu einer Sperr-Eskalation kommt. Hierbei kann es sich um einen pauschalen Prozentsatz handeln oder um einen Prozentsatz auf Grundlage üblicher Transaktionsvolumen.
Wenn beispielsweise für die Anwendungen das Doppelte der durchschnittlichen Anzahl an Sperren zulässig ist:
100 * (Avg # locks per application * 2 * 72 bytes per lock) / (LOCKLIST * 4096 bytes)
Legen Sie "MAXLOCKS" dann gemäß der folgenden Anweisung fest.db2 update db cfg using MAXLOCKS 22
- Zur weiteren Optimierung der Sperrlistenparameter gehört die Verwendung von Snapshot- und Ereignisüberwachungen. Suchen Sie auf Datenbankebene nach den folgenden Informationen:
- Kompletter verwendeter Sperrlistenspeicher
- Anzahl der aufgetretenen Sperr-Eskalationen
- Verwenden Sie die Ereignisüberwachung für die maximale Anzahl an Sperren bei einer Transaktion.
-
"LOCKTIMEOUT"
Um die Zeit festzulegen, die DB2 beim Versuch, eine Sperre zu erhalten, wartet, ändern Sie LOCKTIMEOUT.
-
"DLCHKTIME"
Um die Zeit zwischen den Prüfungen zur Erkennung von Deadlocks einzustellen, passen Sie "DLCHKTIME" an.
-
"DB2LOCK_TO_RB"
DB2LOCK_TO_RB legt das Verhalten der Transaktion fest, wenn die Zeit, die auf eine Sperre gewartet wird, LOCKTIMEOUT überschreitet. Standardmäßig setzt ein Sperr-Timeout die Anforderungstransaktion zurück. Um dieses Verhalten so zu verändern, dass nur die Anweisung mit der Sperranforderung zurückgesetzt wird, ändern Sie DB2LOCK_TO_RB mit db2set DB2LOCK_TO_RB=STATEMENT. Das Standardverhalten sollte allerdings für ArcSDE ausreichend sein.
Weitere Informationen zum Festlegen dieser Parameter finden Sie unter Deadlocks in einer DB2-Datenbank.
Detaillierte Informationen zur Einstellung dieser Parameter finden Sie in der DB2-Dokumentation oder in den Tuning-Handbüchern.