Eigentlich wollte ich nur einen Langläufer testen - eine SQL-Query in der drei Tabellen mit ca. 300.000 Zeilen und eine Tabelle mit mehr als 10.000 Zeilen gejoint werden. Anlass war
meine Beobachtung, dass das Komprimieren großer Tabellen neben Speichergewinn auch eine bessere Performance bringen kann. Würde auch hier die Verdichtung der beteiligten Tabellen den Langläufer beschleunigen?
Ich testete ihn also in zwei Datenbanken, eine davon enthielt die Tabellen in komprimierter Form. Anfangs wies db2batch für die Query mehr als 200 Sekunden aus, mit teilweise signifikant besseren Werten für die Variante mit den Komprimanten. Aber eben nur teilweise.
Um vertrauenswürdigere Daten zu bekommen, ließ ich die Abfragen mehrfach mit anderen Abfragen in kontrollierter Form ablaufen. Ich rechnete also mit langem Warten auf die Ergebnisse. Doch, Überraschung, nach einigen Sekunden war alles vorbei.
In beiden Umgebungen kostete der Langläufer nicht mehr 200 Sekunden (und mehr) sondern jeweils weniger als eine Sekunde. Eine solche Verbesserung der Performance ohne mein Zutun hatte ich noch nicht erlebt. Also fand ich Zweifel angebracht, aber alles lief vollkommen korrekt.
Des Rätsels Lösung ist das neue Self Tuning Memory (STMM) der DB2 9. Ein kurzer Blick auf die Bufferpools zeigte, dass hier der Automatismus kräftig am Werke war. Ein nochmaliges Ausführen der Query mit eingeschalteten Monitorswitch ("update monitor switches using bufferpools on") zeigte in "db2pd -bufferpools -db test", dass sich DB2 die benötigten Daten komplett aus den Bufferpools holen konnte.
Durch das häufige Ausführen der Abfrage konnte STMM die Bufferpools so einstellen, dass die aufwändigen Lesezugriffe vollständig durch schnelle Zugriffe auf Bufferpools ersetzt werden konnten. Das ist sinnvolle "Intelligenz". Das hat zwar 8-10 Wiederholungen gedauert, aber letztendlich bedeutet das: Für für Optimierung der Datenbank kaum noch teure Administratoren herangezogen werden müssen.
Was allerdings der Administrator wusste und STMM nicht: Das Tuning führte meinen Vergleich ad absurdum.