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 folgenden Zusatzmaßnahmen gelten für Vergleichstests, die auf OS/2-Systemen durchgeführt werden:
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:
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.
Anmerkung: | Wenn Sie die Leistungsergebnisse in grafischer Darstellung festhalten würden, müßten Sie nach Stellen suchen, an denen die Kurve einen Maximalwert erreicht und dort verbleibt bzw. wieder absinkt. |
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.