Überraschend und auch nicht überraschend.
Gemeint ist hier der Zugriff auf zeilenkomprimierte DB2 9 Tabellen. Denn das Selektieren von Daten bedeutet eben nicht nur Lesen von Bits und Bytes von Platte oder aus dem Datenbank-Buffer, sondern auch noch das rechenintensive Dekomprimieren der extrahierten Daten. Letzteres belastet den Prozessor mit Mehrarbeit.
Andererseits sinkt durch den geringere Größe der komprimierten Daten der Aufwand für I/O. Darüberhinaus kann aufwändiger I/O durch den wesentlich schnelleren Griff in den Buffer ersetzt werden, denn durch die Komprimierung kann dieser größere Teile der Tabelle im RAM vorhalten.
Es ist also ein Geben und Nehmen. Allgemein wird keine konkrete Vorhersage zu der Auswirkung der Zeilenkomprimierung einer Tabelle auf die Performance eines Zugriffs möglich sein.
Bisherige Erfahrungen gehen davon aus, dass sich die Bearbeitungszeit für SQL-Statements nicht verschlechtert, und wenn Unterschiede festzustellen sind, dann zugunsten der komprimierten Variante.
Ich habe also erwartet, dass sich für meinen Test die Performance möglicherweise geringfügig verbessert. Dieser besteht ausschließlich aus Select-Statements, die einen unter Verwendung von Indexspalten, die anderen erfordern einen Scan der Tabelle.
Diese Gruppe von Statements habe ich dann mit db2batch gegen die komprimierte und die unkomprimierte Tabelle ausführen lassen - mehrfach und in variierter Reihenfolge. Und das immer wieder, denn die db2batch-Ergebnisse waren überraschend:
Im Durchschnitt lieferte die Gesamtheit der Zugriffe auf die komprimierte Tabelle eine um 30% verbesserte Performance.
Wohlgemerkt: Dies gilt nur für die getestete Tabelle und auch nicht für jede Select-Anweisung. In Zukunft werde ich nicht stets so gute Werte erwarten können.
Man kann eben nicht alles haben. Die gleichen Performance-Vergleiche, die ich für die Original-Tabelle und ihr komprimiertes Abbild durchgeführt habe, habe ich auf die beiden umdefinierten Tabellen angewandt. Ich konnte keinen signifikanten Unterschi
Aufgenommen: Dec 26, 22:34
Und hier ist die Theorie zur Praxis: DB2 Explain schätzt für das teuerste Test-Select auf die umdefinierte Tabelle in unkomprimierter bzw. komprimierter Form folgende den Aufwände: unkomprimiertzeilenkomprimiertGesamtaufwand111.757,9453125000 Ti
Aufgenommen: Dec 28, 11:59