HammerDB ist eine Open Source-Software für das Benchmarking von Datenbanken und unterstützt PostgreSQL, Microsoft SQL Server, IBM Db2, Oracle, MariaDB und MySQL, sowie die Nutzung über CLI, lokalem GUI und einem GUI im Web-Browser. Die von HammerDB genutzten Benchmarks, TPROC-C und TPROC-H, basieren auf den weitläufig genutzten TPC-C- und TPC-H-Benchmarks. Die Testresultate werden in NOPM und TPM ausgegeben. Der zum Vergleich zweier verschiedener Datenbanken relevante Wert ist NOPM. Dieser ist ein Derivat der tpmC-Statistik aus der TPC-C-Benchmark und gibt die Anzahl der erreichten Bestell-Transaktionen pro Minute wider.
Erste Schritte
Starten der Anwendung
Nachdem das Container-Image heruntergeladen wurde, starten wir es und vergewissern uns, dass dieses auch läuft:

Die HammerDB-GUI sollte nun unter http://:8080 erreichbar sein. Mit einem Klick auf launcher und anschließend Absenden, starten wir die Anwendung:


Connection string und Schema erstellen
Die Konfiguration des Connection strings ist im Menü unter Benchmark Options -> <database> -> TPROC-C -> Schema -> Options vorzunehmen. Hier öffnet sich ein Fenster, in welchem die dafür benötigten Informationen hinterlegt werden. Diese sind, bis auf kleine Abweichungen, für alle von HammerDB unterstützten Datenbanken gleich.

Im selben Schritt findet auch die Konfiguration des Schemas statt. Dies geschieht mit der Angabe der Anzahl von Warenhäusern und virtuellen Benutzern, welche „Bestellungen“ (Transaktionen) auf die Warenhäuser absetzen werden. In unserem Test werden wir 1000 Warenhäuser und 200 virtuelle User anlegen. Die Anzahl ist dem Test-System anzupassen. Es empfiehlt sich mit etwa 400 Warenhäusern pro Server-CPU-Sockel zu starten. Das Verhältnis Warenhäuser zu virtuellen Benutzern sollte bei etwa 1:5 liegen. In keinem Fall jedoch sollten mehr virtuelle Benutzer als Warenhäuser erstellt werden, da dies aufgrund von Lock contention zu keinen repräsentativen Ergebnissen führen würde.
Die Konfiguration bestätigen wir mit Ok, führen links im Menü einen Doppelklick auf Build aus und bestätigen dann mit Yes.


Die Schema-Erstellung ist beendet, sobald im Reiter Status bei jedem virtuellen Benutzer ein grüner Haken zu sehen ist.

Schema-Check
Um das Schema auf Fehler zu überprüfen, führen wir einen Doppelklick auf Check aus und bestätigen dies mit Yes.

Wenn die Überprüfung erfolgreich war, erhält man folgende Ausgabe:

Driver Script-Konfiguration
Ist das Schema erstellt und erfolgreich überprüft, kann nun das Driver Script angelegt werden. Hier wird der eigentliche Test-Lauf konfiguriert.

Die Felder Oracle Service Name, System User, TPROC-C User, TPROC-C User Password werden automatisch aus den vorherigen Einstellungen übernommen. Der Wert für Total Transactions per User ist standardmäßig auf 1000000 gesetzt und kann so belassen werden.
Das TPROC-C Driver Script sollte als Timed Driver Script ausgeführt werden. Um den Test so einfach wie möglich zu halten, sollten nur die Felder Minutes of Rampup Time und Minutes for Test Duration angepasst werden. Um ein repräsentatives Ergebnis zu erhalten, sollte der Test-Lauf mindestens 15-20 Minuten dauern. Erklärungen und Use-Cases zu den anderen Feldern gibt es in der offiziellen HammerDB-Dokumentation im Driver Script-Kapitel.
Sind alle Werte eingestellt, muss dies über Ok bestätigt werden. Anschließend wird das Driver Script mit einem Doppelklick auf Load geladen. Hier kann man auch sehen, wie aus den vorigen Eingaben aus der Schema-Konfiguration nun ein Connection string erstellt wurde.

Virtual User-Konfiguration
Im Menü unter Virtual Users->Options im neu geöffneten Fenster wird nun die Anzahl der erstellten virtuellen User unter Virtual Users angegeben. Für die anderen Parameter sollten die Standardwerte übernommen werden. Durch einen Klick auf Ok wird die Konfiguration bestätigt.

Mit einem Doppelklick auf Create wird der Prozess zur Erstellung der virtuellen Benutzer initiiert.

Sind alle virtuellen User erstellt, kann der Benchmark-Run durch einen Doppelklick auf Run gestartet werden.

Der Test läuft nun für die vorher spezifizierte Dauer. In dieser Zeit können die Transaktionen pro User beobachtet werden.
Ist der Run beendet, wird dies im Feld des Virtual User 1-MONITOR zusammen mit dem Ergebnis angezeigt.


Der NOPM-Wert kann nun mit dem einer anderer Datenbank verglichen werden.
