![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[z/OS]](../images/ngzos.gif)
DB2-Optimierungsparameter
In diesem Artikel sind die Parameter beschrieben, die Sie konfigurieren können, um eine bessere Datenbankleistung zu erzielen.
Einen vollständigen Überblick über die DB2-Optimierung finden Sie in der Veröffentlichung DB2 UDB Administration Guide: Performance.
Weitere Informationen zur Verwendung von AIX mit
DB2 finden Sie im Artikel
"AIX-Systeme optimieren".
DB2-Protokollierung
In DB2 gibt es für jede Datenbank entsprechende Protokolldateien, aus denen Administratoren unter anderem Informationen zum Datenbankzugriff und zur Anzahl der Verbindungen entnehmen können. Bei Systemen mit mehreren Festplattenlaufwerken sind nennenswerte Durchsatzverbesserungen möglich, wenn die Protokolldateien für die einzelnen Datenbanken auf einem anderen Festplattenlaufwerk als die Datenbankdateien gespeichert werden.
- Anzeige- oder Einstellmöglichkeiten: Setzen Sie an einer DB2-Eingabeaufforderung den folgenden Befehl ab: db2 update db cfg for [Datenbankname] using newlogpath [vollständig_qualifizierter_Pfad].
- Standardwert: Protokolle befinden sich auf derselben Platte wie die Datenbank.
- Empfohlener Wert: Verwenden Sie ein eigenständiges Laufwerk mit hoher Geschwindigkeit, dessen Leistung durch eine RAID-Konfiguration (Redundant Array of Independent Disks) verstärkt wird.
Advisor-Funktion für DB2-Konfiguration
Diese Advisor-Funktion aus dem DB2 Control Center berechnet empfohlene Werte für die Größe des DB2-Pufferpools sowie Konfigurationsparameter für die Datenbank und den Datenbankmanager und zeigt diese Werte zur Auswahl an. Weitere Informationen zur Advisor-Funktion stellt die Onlinehilfefunktion im Control Center bereit.
Anzahl der Verbindungen zu DB2 - MaxAppls und MaxAgents
Stellen Sie beim Konfigurieren der Datenquelleneinstellungen für die Datenbanken sicher, dass der Wert der DB2-Einstellung "MaxAppls" größer als die maximale Anzahl der Verbindungen für die Datenquelle ist. Falls Sie planen, Klone zu erstellen, ermitteln Sie den Wert für die Einstellung "MaxAppls", indem Sie die maximale Anzahl der Verbindungen mit der Zahl der Klone multiplizieren. Dieselbe Abhängigkeit gilt für die Anzahl Verbindungen des Sitzungsmanagers. Der Wert der Einstellung "MaxAppls" darf nicht kleiner als die Anzahl der Verbindungen sein. Falls Sie für Sitzungs- und Datenquellen dieselbe Datenbank verwenden, muss der Wert für "MaxAppls" der Summe der Verbindungen für den Sitzungsmanager und für die Datenquellen entsprechen.
Beispiel: MaxAppls = (Anzahl Verbindungen für Datenquelle + Anzahl Verbindungen im Sitzungsmanager) multipliziert mit der Anzahl der Klone
Vergewissern Sie sich nach dem Berechnen von MaxAppls für die Datenbank von WebSphere Application Server und die einzelnen Anwendungsdatenbanken, dass die Einstellung "MaxAgents" für DB2 mindestens der Summe aller MaxAppls-Werte entspricht. Beispiel: MaxAgents = Summe von MaxAppls aller Datenbanken.
DB2 buffpage
Verbessert die Systemleistung. Der Parameter "buffpage" ist ein Parameter für die Datenbankkonfiguration. Ein Pufferpool ist ein Speicherbereich, in dem Datenbankseiten mit Tabellenzeilen oder Indexeinträgen temporär gelesen und geändert werden. Auf Daten im Speicher kann deutlich schneller zugegriffen werden als auf Daten, die sich auf einem Datenträger befinden.
- Anzeige- oder Einstellmöglichkeiten: Mit dem DB2-Befehl
get db cfg for x
können Sie für die Datenbank x den aktuellen Wert des Parameters
"buffpage" anzeigen. Suchen Sie in der Ausgabe nach dem Wert BUFFPAGE.
Wenn Sie BUFFPAGE auf den Wert n setzen möchten, setzen Sie den DB2-Befehl
update db cfg for x mit BUFFPAGE n ab. Stellen Sie wie folgt sicher, dass
NPAGES gleich -1 ist:
db2 <-- Wechseln Sie in den DB2-Befehlsmodus, da andernfalls die folgende Operation "select" nicht wie angegeben funktioniert connect to x <-- (x ist hier der Name einer bestimmten DB2-Datenbank) select * from syscat.bufferpools (Notieren Sie die Standardeinstellung, z. B. IBMDEFAULTBP) (wenn NPAGES bereits gleich -1 ist, müssen Sie den folgenden Befehl nicht absetzen) alter bufferpool IBMDEFAULTBP size -1 (Setzen Sie den obigen Befehl "select" erneut ab, und NPAGES ist dann gleich -1)
Sie können eine Momentaufnahme der Datenbank erstellen, während die Anwendung ausgeführt wird, und die Pufferpooltrefferquote wie folgt berechnen:- Gehen Sie zum Erstellen der Momentaufnahme wie folgt vor:
- Setzen Sie den Befehl "update monitor switches using bufferpool on" ab.
- Vergewissern Sie sich, dass die Überwachung des Pufferpools aktiviert ist, indem Sie den Befehl "get monitor switches" absetzen.
- Löschen Sie die Überwachungszähler mit dem Befehl "reset monitor all".
- Führen Sie die Anwendung aus.
- Setzen Sie den Befehl "get snapshot for all databases" ab, bevor die Anwendungen die Verbindung zur Datenbank trennen. Andernfalls geht die Statistik verloren.
- Setzen Sie den Befehl "update monitor switches using bufferpool off" ab.
- Berechnen Sie die Trefferquote anhand der folgenden Statistik für die Datenbankmomentaufnahme:
- Buffer pool data logical reads
- Buffer pool data physical reads
- Buffer pool index logical reads
- Buffer pool index physical reads
- Gehen Sie zum Erstellen der Momentaufnahme wie folgt vor:
- Standardwert: 250
- Empfohlener Wert: Erhöhen Sie den Wert, bis die Momentaufnahme eine zufriedenstellende Trefferquote anzeigt.
- P = physische Leseoperationen in den Daten des Pufferpools + physische Leseoperationen im Index des Pufferpools
- L = logische Leseoperationen in den Daten des Pufferpools + logische Leseoperationen im Index des Pufferpools
- Trefferquote = (1-(P/L)) * 100 %
Optimierungsstufe für DB2-Abfragen
Legt fest, welchen Arbeits- und Ressourcenumfang DB2 für die Optimierung des Zugriffsplans aufwendet. Wenn in DB2 eine Datenbankabfrage durchgeführt wird, werden verschiedene Methoden angewendet, um einen möglichst effizienten Zugriffsplan zu berechnen. Die Werte reichen von 0 bis 9. Bei einer Optimierungsstufe von 9 wendet DB2 sehr viel Zeit und alle verfügbaren Statistiken für die Optimierung des Zugriffsplans auf.
- Anzeige- oder Einstellmöglichkeiten:
Die Optimierungsstufe wird jeweils für eine Datenbank festgelegt und kann über die Befehlszeile oder über das
DB2 Control Center definiert werden. Statische SQL-Anweisungen
verwenden die mit den Befehlen prep und bind angegebene Optimierungsstufe.
Wenn keine
Optimierungsstufe angegeben wird, verwendet DB2 die von der Einstellung
"dft_queryopt" angegebene Standardstufe. Dynamische
SQL-Anweisungen verwenden die Optimierungsklasse, die im Sonderregister "Current Query Optimization"
angegeben ist. Dieses Register wird mit der SQL-Anweisung SET
gesetzt. Die folgende Anweisung setzt die Optimierungsklasse beispielsweise auf 1:
Set current query optimization = 1
Wenn das Register "Current Query Optimization" nicht gesetzt ist, werden dynamische Anweisungen mit der Standardoptimierungsklasse gebunden. - Standardwert: 5
- Empfohlener Wert: Definieren Sie die Optimierungsstufe entsprechend den Anforderungen der Anwendung. Ein hoher Wert sollte nur bei sehr komplizierten Abfragen verwendet werden.
DB2 reorgchk
Ruft die aktuelle Statistik für Daten und erneute Bindeoperationen ab. Die Leistung der SQL-Anweisung kann sich nach zahlreichen Aktualisierungen, Löschungen oder Einfügungen vermindern, daher empfiehlt sich die Verwendung dieses Parameters.
- Anzeige- und Einstellmöglichkeiten: Verwenden Sie den DB2-Befehl "reorgchk update statistics on table all", um für alle Benutzer und Systemtabellen der Datenbank, mit der Sie gegenwärtig verbunden sind, die Operation runstats auszuführen. Verwenden Sie den Befehl bind, um Pakete erneut zu binden. Falls Statistiken verfügbar sind, führen Sie im DB2 CLP den Befehl db2 -v "select tbname, nleaf, nlevels, stats_time from sysibm.sysindexes" aus. Sollten keine Statistikaktualisierungen vorhanden sein, sind nleaf und nlevels -1, und stats_time hat einen leeren Eintrag (z. B. "-"). Falls der Befehl "runstats" bereits ausgeführt wurde, wird die Echtzeitmarke aus der RUNSTATS-Operation ebenfalls unter stats_time angezeigt. Wenn Sie anhand der angezeigten Uhrzeit zu dem Schluss kommen, dass diese Statistik veraltet ist, führen Sie den Befehl "runstats" erneut aus.
- Standardwert: Ohne
- Empfohlener Wert: Keiner
DB2-Zeitlimit für Sperre
Gibt an, wie viele Sekunden eine Anwendung auf eine Sperre wartet. Mit dieser Eigenschaft können Sie ein globales gegenseitiges Sperren in den Anwendungen verhindern.
- Anzeige- oder Einstellmöglichkeiten: Setzen Sie zum Anzeigen des aktuellen Wertes für das Sperrzeitlimit für die Datenbank xxxxxx den DB2-Befehl get db cfg for xxxxxx ab und suchen Sie nach dem Wert LOCKTIMEOUT. Wenn Sie LOCKTIMEOUT auf den Wert n setzen möchten, setzen Sie den DB2-Befehl update db cfg for xxxxxx mit LOCKTIMEOUT n ab. xxxxxx steht hier für den Namen der Anwendungsdatenbank und n für einen Wert zwischen 0 und 30.000 einschließlich.
- Standardwert: -1, d. h. die Erkennung von Sperrzeitlimits ist inaktiviert.
In diesem Fall wartet eine Anwendung so lange auf eine Sperre (sofern zum Zeitpunkt der Anforderung keine verfügbar ist),
bis eines der folgenden Ereignisse eintritt:
- Die Sperre wird gewährt.
- Es tritt ein gegenseitiges Sperren auf.
- Empfohlener Wert: Wenn Ihr Datenbankzugriffsmuster zu sehr vielen Schreiboperationen neigt, setzen Sie den Wert so, dass Sie frühzeitig gewarnt werden, wenn eine Zeitlimitüberschreitung eintritt. 30 Sekunden sind für diesen Zweck ausreichend. Falls Ihr Zugriffsmuster eher zu vielen Lesezugriffen neigt, können Sie den Standardwert für das Sperrzeitlimit übernehmen oder die Eigenschaft auf einen höhere Wert als 30 (Sekunden) setzen.
Maximale Anzahl der DB2-Sperren
Gibt an, wie viel Prozent der Sperrenliste erreicht sein müssen, damit der Datenbankmanager die Eskalation von Zeile zu Tabelle für die von der Anwendung gehaltenen Sperren durchführt. Obwohl der Eskalationsprozess nicht viel Zeit in Anspruch nimmt, beeinträchtigt das Sperren ganzer Tabellen im Gegensatz zum Sperren einzelner Zeilen die Parallelität und unter Umständen die Gesamtleistung der Datenbank bei nachfolgenden Zugriffsversuchen auf die betroffenen Tabellen.
- Anzeige- oder Einstellmöglichkeiten: Setzen Sie zum Anzeigen des aktuellen Wertes der Eigenschaft "maxlocks" für die Datenbank xxxxxx den DB2-Befehl get db cfg for xxxxxx ab, und suchen Sie den MAXLOCKS-Wert. Wenn Sie MAXLOCKS auf den Wert n setzen möchten, führen Sie den DB2-Befehl update db cfg for xxxxxx mit MAXLOCKS n aus. xxxxxx steht hier für den Namen der Anwendungsdatenbank und n für einen Wert zwischen 1 und 100 einschließlich.
- Standardwert: Die Standardwerte für die Eigenschaft unter dem jeweiligen Betriebssystem können Sie in den aktuellen Informationen zur Datenbank nachschlagen.
- Empfohlener Wert: Falls es durch die Sperreneskalation zu Leistungseinbußen kommt, müssen Sie den Wert dieses Parameters oder des Parameters "locklist", der im folgenden Abschnitt beschrieben ist, erhöhen. Sperreneskalationen können mit dem Datenbanksystemmonitor ermittelt werden.
DB2-Sperrenliste
Gibt die Speichermenge an, die der Sperrenliste zugeordnet ist.
- Anzeige- und Einstellmöglichkeiten: Setzen Sie zum Anzeigen des aktuellen Wertes der Eigenschaft "locklist" für die Datenbank xxxxxx den DB2-Befehl get db cfg for xxxxxx ab und suchen Sie nach dem LOCKLIST-Wert. Wenn Sie LOCKLIST auf den Wert n setzen möchten, führen Sie den DB2-Befehl update db cfg for xxxxxx mit LOCKLIST n aus. xxxxxx steht für den Namen der Anwendungsdatenbank und n für einen Wert zwischen 4 und 60.000 einschließlich.
- Standardwert: Die Standardwerte für die Eigenschaft unter dem jeweiligen Betriebssystem können Sie in den aktuellen Informationen zur Datenbank nachschlagen.
- Empfohlener Wert: Falls es durch die Sperreneskalation zu Leistungseinbußen kommt, müssen Sie den Wert dieses Parameters oder des Parameters "maxlocks", der im vorherigen Abschnitt beschrieben ist, erhöhen. Sperreneskalationen können mit dem Datenbanksystemmonitor ermittelt werden. Nähere Einzelheiten finden Sie im Dokument DB2 Administration Guide: Performance.