DB2 Universal Database - Systemverwaltung


Ausführen der Vergleichstests

Eine Art von Datenbankvergleichstest besteht darin, einen Konfigurationsparameter auszuwählen und den Test mit verschiedenen Werten für den gewählten Parameter auszuführen, bis die maximale Leistungssteigerung erzielt ist. Ein einzelner Testlauf sollte die mehrmalige Ausführung der Anwendung (z. B. zehnmal) mit demselben Parameterwert beinhalten, um einen Durchschnittswert für die benötigte Zeit zu ermitteln, der die Auswirkungen einer Änderung des Parameterwertes exakter wiedergibt.

Bei der Ausführung des Vergleichstests sollte der erste Durchlauf (Warm-up Run, Aufwärmdurchlauf) von den nachfolgenden Iterationen (Normal Run, normaler Durchlauf) getrennt betrachtet werden. Dies ist notwendig, weil der Aufwärmdurchlauf stets einige Startaktivitäten (z. B. Initialisierung des Pufferpools) enthält. Folglich dauert der Aufwärmdurchlauf etwas länger als die normalen Durchläufe. Obwohl die Daten aus dem Aufwärmdurchlauf durchaus realistische Werte darstellen können, sind sie für die statistische Auswertung nicht relevant. Zur Berechnung des Durchschnittswerts für die Taktung oder die CPU für eine bestimmte Menge von Parameterwerten sollten Sie daher die Ergebnisse von normalen Durchläufen verwenden.

Sie können auch in Betracht ziehen, mit dem Assistent: Leistungskonfiguration den Aufwärmdurchlauf des Vergleichstests zu erstellen. Die im Assistent: Leistungskonfiguration gestellten Fragen geben einen Einblick in die Gesichtspunkte, die bei der Anpassung der Konfiguration Ihrer Umgebung für normale Durchläufe in der Vergleichstestphase zu beachten sind. Wenn Sie den Assistent: Leistungskonfiguration verwenden möchten, geben Sie db2cc ein, um die Steuerzentrale aufzurufen, und fahren von dort aus fort.

Wenn die Vergleichstests mit einzelnen Abfragen durchgeführt werden, muß sichergestellt werden, daß die potentiellen Auswirkungen früherer Abfragen minimal bleiben. Dies kann durch Füllen des Pufferpools (Flushing) erreicht werden, d. h. eine Anzahl von Seiten, die für die zu testende Abfrage irrelevant sind, wird in den Pufferpool eingelesen.

Nach der Ausführung der Durchläufe für eine Menge von Parameterwerten kann ein einzelner Parameter geändert werden. Zwischen den einzelnen Durchläufen sollten jedoch folgende Maßnahmen durchgeführt werden, um die Vergleichstestumgebung wieder in den Ausgangszustand zurückzusetzen:

Die Ausgabe des Vergleichstestprogramms sollte eine Kennung für jeden Test (Test Number), die Iteration (Durchlauf) der Programmausführung (Iteration Number), die Anweisungsnummer (Statement Number) und die für die Ausführung erfaßte Zeit (Timing) enthalten. Eine Übersicht über Vergleichstestergebnisse nach einer Reihe von Messungen könnte wie folgt aussehen:

Abbildung 102. Beispielergebnisse eines Vergleichstestprogramms

          Test     Iter.   Stmt    Timing         SQL Statement
     Numbr    Numbr   Numbr   (hh:mm:ss.ss)
      002      05      01     00:00:01.34    CONNECT TO SAMPLE
      002      05      10     00:02:08.15    OPEN cursor_01
      002      05      15     00:00:00.24    FETCH cursor_01
      002      05      15     00:00:00.23    FETCH cursor_01
      002      05      15     00:00:00.28    FETCH cursor_01
      002      05      15     00:00:00.21    FETCH cursor_01
      002      05      15     00:00:00.20    FETCH cursor_01
      002      05      15     00:00:00.22    FETCH cursor_01
      002      05      15     00:00:00.22    FETCH cursor_01
      002      05      20     00:00:00.84    CLOSE cursor_01
      002      05      99     00:00:00.03    CONNECT RESET
Anmerkung:Die Daten im gezeigten Bericht dienen nur der Illustration. Sie stellen keine durch Tests ermittelten Ergebnisse dar.

Bei der Auswertung dieses Berichts ergäbe sich, daß die Anweisung CONNECT (Anweisung 01) 1,34 Sekunden dauerte, die Anweisung OPEN CURSOR (Anweisung 10) 2 Minuten und 8,15 Sekunden, die Anweisungen FETCH (Anweisung 15) sieben Zeilen mit der längsten Verzögerung von 0,28 Sekunden lieferten, die Anweisung CLOSE CURSOR (Anweisung 20) 0,84 Sekunden benötigte und die Anweisung CONNECT RESET (Anweisung 99) 0,03 Sekunden in Anspruch nahm.

Es könnte sich als vorteilhaft erweisen, wenn das Programm die Daten in einem DEL-Format (Delimited ASCII) ausgeben könnte, so daß diese später in eine Datenbanktabelle oder ein Arbeitsblatt zur weiteren statistischen Analyse importiert werden könnten.

Eine Beispielausgabe für einen Vergleichstestbericht könnte folgendermaßen aussehen:

Abbildung 103. Beispielbericht zu den vom Vergleichstest ermittelten Ausführungszeiten

              PARAMETER        VALUES FOR EACH BENCHMARK TEST
       TEST NUMBER      001     002     003    004     005
       locklist         63      63      63      63      63
  >>   buffpage         1000    1175    1250    1325    1400     <<
       maxappls         8       8       8       8       8
       applheapsz       48      48      48      48      48
       dbheap           128     128     128     128     128
       sortheap         256     256     256     256     256
       maxlocks         22      22      22      22      22
       stmtheap         1024    1024    1024    1024    1024
       SQL STMT         AVERAGE TIMINGS (seconds)
         01             01.34   01.34   01.35   01.35   01.36
         10             02.15   02.00   01.55   01.24   01.00
         15             00.22   00.22   00.22   00.22   00.22
         20             00.84   00.84   00.84   00.84   00.84
         99             00.03   00.03   00.03   00.03   00.03
Anmerkung:Die Daten im gezeigten Bericht dienen nur der Illustration. Sie stellen keine durch Tests ermittelten Ergebnisse dar.

Eine Untersuchung der Daten in diesem Beispiel ergibt, daß durch die Änderung des Parameters buffpage die Zeiten für die Anweisung OPEN CURSOR erfolgreich von 2,15 Sekunden auf 1,00 Sekunden herabgesetzt wurden. (Hierbei wird angenommen, daß es nur einen (1) Pufferpool gibt, dessen Größe (NPAGES) auf den Wert -1 gesetzt ist. Das heißt, die Größe des Pufferpools wird vom Parameter buffpage gesteuert.)

Zusammenfassend können folgende Schritte/Iterationen genannt werden, die bei Vergleichstests einer Datenbankanwendung ausgeführt werden können:

Schritt 1
Belassen Sie alle Parameter zur Optimierung der Datenbank und des Datenbankmanagers außer folgenden auf ihren Standardwerten:

Führen Sie Ihre Anzahl von Durchläufen (Iterationen) für diesen Anfangszustand aus, und berechnen Sie den Durchschnittswert für die Taktung oder die CPU.

Schritt 2
Wählen Sie einen und nur einen für die Optimierung zu testenden Parameter aus, und ändern Sie seinen Wert.

Schritt 3
Führen Sie eine weitere Anzahl von Durchläufen (Iterationen) aus, und berechnen Sie den Durchschnittswert für die Taktung oder die CPU.

Schritt 4
Ergreifen Sie in Abhängigkeit von den Ergebnissen des Vergleichstests eine der folgenden Maßnahmen:

Sie können ein Treiberprogramm schreiben, das Sie bei der Durchführung der Vergleichstests unterstützt. Dieses Treiberprogramm könnte in einer Sprache wie REXX bzw. bei auf UNIX basierenden Systemen mit Hilfe von Shell-Prozeduren (Skripts) erstellt werden.

Dieses Treiberprogramm könnte das Vergleichstestprogramm ausführen, ihm dabei die richtigen Parameter übergeben, den Test durch mehrere Durchläufe führen, die Umgebung in einen konsistenten Zustand zurückversetzen, den nächsten Test mit neuen Parameterwerten vorbereiten und die Testdaten sammeln bzw. konsolidieren. Diese Treiberprogramme können so flexibel gestaltet werden, daß sie zur Ausführung einer ganzen Reihe von Vergleichstests, zur Analyse der Ergebnisse und zur Erstellung eines Berichts über die endgültigen und optimalen Parameterwerte für einen bestimmten Test verwendet werden könnten.


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]