Vorbereiten von Vergleichstests
Es müssen bestimmte Voraussetzungen erfüllt sein, bevor die Durchführung von Leistungsvergleichstests eingeleitet werden kann.
- Schließen Sie den logischen und den physischen Entwurf der Datenbank ab, für die Ihre Anwendung ausgeführt werden soll.
- Erstellen Sie Tabellen, Sichten und Indizes.
- Normalisieren Sie Tabellen, binden Sie Anwendungspakete und füllen Sie Tabellen mit realistischen Daten. Stellen Sie sicher, dass aussagekräftige Statistiken verfügbar sind.
- Planen Sie die Ausführung an einer Datenbank in einer Größe wie in der Produktionsumgebung, sodass die Anwendung repräsentative Speicheranforderungen testen kann. Falls dies nicht möglich ist, versuchen Sie sicherzustellen, dass die Proportionen der verfügbaren Systemressourcen zu den Daten im Test- und im Produktionssystem identisch sind. (Wenn das Testsystem z. B. 10 % der Daten hat, verwenden Sie 10 % der Prozessorzeit und 10 % des Hauptspeichers, der für das Produktionssystem verfügbar ist.)
- Platzieren Sie Datenbankobjekte an ihre endgültigen Datenträgerpositionen, definieren Sie die Größe von Protokolldateien, legen Sie die Position von Arbeitsdateien und Backup-Images fest und testen Sie die Backup-Prozeduren.
- Prüfen Sie Pakete, um sicherzustellen, dass Leistungsoptionen wie Zeilenblockung aktiviert werden, wenn dies möglich ist.
Während der Vergleichstests können die praktischen Grenzen einer Anwendungen zutage treten. Jedoch liegt das Ziel von Vergleichstests in der Messung der Leistung und nicht in der Feststellung von Fehlern.
Ihr Vergleichstestprogramm sollte in einer präzisen Nachbildung der endgültigen Produktionsumgebung ausgeführt werden. Im Idealfall sollte dasselbe Servermodell mit derselben Speicher- und Festplattenkonfiguration verwendet werden. Dies ist besonders dann von Bedeutung, wenn die Anwendung letztendlich eine große Anzahl von Benutzern bedienen und große Datenvolumen verarbeiten soll. Das Betriebssystem und alle Kommunikations- und Speichereinrichtungen, die direkt vom Vergleichstestprogramm verwendet werden, sollten ebenfalls zuvor optimiert worden sein.
Die zu testenden SQL-Anweisungen sollten entweder zur Kategorie 'Repräsentatives SQL' oder zur Kategorie 'Extremfall-SQL' (Worst-Case) gehören, wie in der folgenden Liste erläutert wird.
- Repräsentatives SQL
- Zu repräsentativem SQL werden solche Anweisungen gezählt, die während eines typischen Einsatzes der zu testenden Anwendung ausgeführt werden. Welche Anweisungen ausgewählt werden, hängt von der Spezifik der Anwendung ab. Beispielsweise kann für eine Dateneingabeanwendung eine Anweisung INSERT getestet werden, während für eine Banktransaktion eine Anweisung FETCH, eine Anweisung UPDATE und mehrere Anweisungen INSERT getestet werden können.
- Extremfall-SQL
- Zu dieser Kategorie gehören Anweisungen mit folgenden Merkmalen:
- Anweisungen, die häufig ausgeführt werden.
- Anweisungen, die umfangreiche Datenvolumen verarbeiten.
- Anweisungen, die zeitkritisch sind. Beispiel: Anweisungen in einer Anwendung, die Kundeninformationen abruft und aktualisiert, während der Kunde am Telefon wartet.
- Anweisungen mit einer hohen Anzahl von Joins oder die komplexesten Anweisungen in der Anwendung. Beispiel: Anweisungen in einer Finanzanwendung, die Zusammenfassungen der monatlichen Vorgänge für alle Konten eines Kunden generiert. Eine allgemeine Tabelle enthält vielleicht die Kundenadressen und die Kontonummern. Jedoch müssen mehrere andere Tabellen verknüpft werden, um alle benötigten Daten über Kontotransaktionen zu verarbeiten und zusammenzustellen.
- Anweisungen, die einen ungünstigen Zugriffspfad verwenden, zum Beispiel eine, die nicht durch einen verfügbaren Index unterstützt wird.
- Anweisungen, die eine lange Ausführungszeit haben.
- Anweisungen, die nur bei der Initialisierung einer Anwendung ausgeführt werden, jedoch überproportional großen Ressourcenbedarf haben. Beispiel: Anweisungen in einer Anwendung, die eine Liste von Arbeiten für Konten erstellt, die während des Arbeitstages auszuführen sind. Wenn die Anwendung gestartet wird, löst die erste größere SQL-Anweisung einen Join über zahlreiche Tabellen aus, um eine sehr umfangreiche Liste aller Konten zu erstellen, für die der Benutzer der Anwendung verantwortlich ist. Die Anweisung wird vielleicht nur wenige Male jeden Tag ausgeführt, jedoch nimmt ihre Ausführung einige Minuten in Anspruch, wenn sie nicht ordnungsgemäß optimiert wurde.