SQL-Datenbanken
Wann sich Datenkomprimierung lohnt
Mehrfach vorkommende Daten eliminieren – Tabellenkompression
Spricht man von Komprimierung, meint man in der Regel Tabellenkompression. Tabellenkompression ist eine seit mehreren Jahren übliche Methode, den Speicherbedarf in strukturierten Daten zu reduzieren. Dabei wird die Tatsache genutzt, dass selbst bei hoch normalisierten relationalen Datenbanken in einigen Attributen gleiche Werte in mehreren Datensätzen auftreten. Beispiele sind Felder mit eingeschränktem Wertebereich wie „Farbe“, „Geschlecht“ oder „Status“. Besonders viele Mehrfacheinträge befinden sich jedoch in schwach normalisierten Tabellen, wie sie im Data-Warehouse-Umfeld aus Performance-Gründen üblich sind.
Bei der Tabellenkompression wird Speicherplatz gespart, indem Mehrfacheinträge in einer Tabelle nur einmal abgelegt werden. Werte, die sich wiederholen, werden in einer eigenen Symboltabelle auf Blockebene gespeichert. An Stelle der sich wiederholenden Daten steht dann im jeweiligen Datensatz nur noch ein Zeiger auf diese Tabellenstruktur. Damit erfolgt praktisch eine automatische Normalisierung durch Zusammenfassen aller Mehrfacheinträge von Datenfeldern im Datenbank-Block.
Die Abbildung zeigt den Table Compress anschaulich anhand eines Beispiels mit fünf Datensätzen.
Die Komprimierung erfolgt beim Einfügen von Daten in die Tabelle. Die Platzersparnis ergibt sich aus der Verwendung der Zeiger, die weniger Speicherplatz als die Datenwerte erfordern. Dabei verringert sich nicht nur der Speicherplatzbedarf auf der Festplatte und im RAM, sondern es erhöht sich auch die Performance der Tabellenzugriffe. Der Komprimierungsalgorithmus ist sehr effizient, der CPU-Verbrauch für die Komprimierung beziehungsweise Dekompression gering. Für den Anwender ändert sich beim Zugriff auf die Daten nichts. Die Kompression ist für ihn vollständig unsichtbar.