Vor Kurzem bin ich zu DB2 und Performance befragt worden. Leider konnte ich nicht alles vollständig und zu meiner Zufriedenheit beantworten. Ab morgen gibt es auf der CeBit die Gelegenheit, all die offen gebliebenen Themen kompetent schließen zu lassen. Hier ein Auszug der Fragen (Q) und Antworten (A).
Q: Kann man bei der DB2 auch Datenbanken komprimieren?
A: Auf jeden Fall bei der neuen Version. Ich bin nicht sicher, was die aktuelle Version 8.2 angeht.
AA: "Row Compression" ist ein neues Feature der
DB2 Viper und nicht zu verwechseln mit der Komprimierung von Nullen und Standardwerten (VALUE COMPRESSION) der aktuellen Version.
Q: Sind die dann Read-only oder noch schreibbar?
A: (zensiert)
AA: Da in der "Ankündigung" keine Einschränkung hierzu gemacht wurde, werden komprimierte Tabellen wohl auch beschreibbar sein.
Q: Hab heute extra mal nen Benchmark laufen lassen. Approx 10k Records pro Stunde... Ist das gut?
A: Kommt natürlich darauf an ... (die übliche Antwort bei solchen Fragen nach HW, SW, Größe der Tabelle, Indizes, Schuhgröße des Benutzers usw.)
AA: Das klingt immer noch nach keiner guten Performance. Das sollte aber besser am lebenden Objekt, soll heißen an der Tabelle, getestet werden.
Q: Macht es eigentlich mehr Sinn 1 mil. Records mit einem Select abzurufen oder anhand des prim. key in 10 Selects aufzuspalten?
A: Hast du genug RAM sollte, das egal sein.
AA: Das ist wieder so eine "Das kommt darauf an"-Frage: wie will der geneigte Frager die selektierten Daten weiterverarbeiten?
An dieser Stelle ist es wieder notwendig, etwas zu APL zu schreiben: Seit ich ihn kenne vertritt Axel G. die Auffassung, dass es stets schneller ist, APL soviel RAM wie möglich zu geben, alle zu verarbeitende Daten in den APL-Workspace zu laden, um dann darauf rumzufuhrwerken. Ich habe dazu stets gemäß Radio Eriwan "Im Prizip ja" gesagt. Letztlich habe ich die Performance einer APL-Anwendung, die viele Inserts und Updates absetzte, um Faktoren verbessert, indem ich der Anwendung weniger RAM gelassen habe. Warum wohl? Da haben sich zwei um all meinen schönen Speicher geprügelt.
Zum letzten Q hatte ich dann noch ein
A: Du kannst die DB2 so konfigurieren, dass große Resultsets am besten mit viel Speicher performen.
AA: Das macht die DB2 inzwischen auch selbst. Per Advisor schlägt sie für eine konkrete Datenbank eine optimale Konfiguration vor. Dem bin ich dann gefolgt und habe nun überraschend gute Antwortzeiten auch bei komplexen bei Selects.
Mal sehen was BB dazu auf der CeBit meint.