SQL-Datenbanken
Wann sich Datenkomprimierung lohnt
Tabellenkompression einrichten
Grundsätzlich erfolgt die Datenkompression beim Schreiben. Die Blöcke werden jedoch nicht bei jeder Schreiboperation komprimiert, sondern im Batch-Modus. Datenmengen, die kleiner als ein Block sind, werden nicht komprimiert.
Unter OracleOracle 11g kann die Komprimierung einer Tabelle bei der Erstellung mit der Option „Compress“ angefordert werden: CREATE TABLE tab-name ..... COMPRESS
;
Alles zu Oracle auf CIO.de
Eine bereits bestehende Tabelle lässt sich wie folgt komprimieren: ALTER TABLE tab-name MOVE COMPRESS
;
Dabei wird eine neue Tabelle mit der Eigenschaft COMPRESSION
angelegt. Anschließend werden die Daten komprimiert eingefügt, die alte Tabelle wird gelöscht und die neue umbenannt.
Sollen Daten in eine bereits komprimierte Tabelle eingefügt werden, sollte dies immer mit DIRECT PATH
erfolgen. Ein normales Einfügen mit INSERT
oder SQL*LOADER
führt zu fast keiner Komprimierung.
Ein möglicherweise entscheidender Nachteil der Tabellenkompression ist folgender: Werden die Daten einer komprimierten Tabelle nachträglich geändert, führt dies zu einer Dekompression. Nach der Änderung werden die Datensätze in unkomprimierter Form wieder eingefügt. Die angestrebte Platzersparnis geht dann verloren. Eine Tabellenkompression ist also nur dann sinnvoll, wenn die Daten vorrangig nur noch gelesen werden.
Der folgende Befehl macht die Komprimierung rückgängig: ALTER TABLE tab-name MOVE NOCOMPRESS
;
Eine weitere Möglichkeit der Tabellenkompression ist die Definition auf TABLESPACE- und Partitionsebene. Bei Definition auf TABLESPACE-Ebene erben alle Tabellen die Kompressionseigenschaft.