|
Speicherplatzeinsparung durch Komprimierung und der Compression Advisor dbms_compression
von Ulrike Schwinn, ORACLE Deutschland GmbH
Speicherplatzeinsparungen und Performanceverbesserungen sind zwei wichtige Argumente für den Einsatz von Komprimierung in der Datenbank.
Mit Oracle Database 11g sind zusätzlich neue Algorithmen und Funktionen
hinzugefügt worden, die die Komprimierung für die Praxis noch interessanter machen können.
Je nach Algorithmus kann dabei ein grosser Anteil des urspünglichen Platzes eingespart werden.
Bevor die Performanceverbesserung beispielsweise mit dem Real Application Testing Werkzeug
getestet wird, wird daher in der Regel im ersten Schritt die Einsparung an Speicherplatz überprüft.
Wie kann man den Grad der Speicherplatzeinsparung feststellen? Naheliegend ist, neue Segmente mithilfe
der neuen Speichereinstellung zu erstellen und dann den Quotient aus nicht komprimierten und komprimierten
Objekten - die sogenannte Compression Ratio - zu berechnen. Eine Alternative ist die Nutzung des neuen
Compression Advisors in 11g Release 2, der ohne zusätzliche Installation mit dem Package
DBMS_COMPRESSION zur Verfügung steht. Abgesehen von der Compression Ratio für OLTP Compression bietet
dieser Compression Advisor weitere interessante Funktionen.
Hat man allerdings noch keinen Zugriff auf eine 11g Release 2 Installation,
kann man Unterstützung durch eine zusätzliche Package-Installation erhalten. Download und
Nutzungsbeschreibung dazu findet sich auf OTN. Im Unterschied zur 11g Release 2 Funktionalität muss man bei der Nutzung
mit einigen Einschränkungen rechnen. So ist dieses Package beispielsweise nicht für partitionierte
Tabellen geeignet. Ausserdem werden nicht alle Komprimierungsalgorithmen unterstützt.
Der folgende Beitrag konzentriert sich auf die Funktionsweise des Compression Advisors in 11g Release 2 und
gibt darüberhinaus Tipps zur Anwendung von Komprimierung.
Bestimmung der Compression Ratio: OLTP Komprimierung
Im ersten Fall soll die Compression Ratio bestimmt werden. Der Aufruf der Prozedur
GET_COMPRESSION_RATIO benötigt einige IN Parameter und liefert das Ergebnis über die vorgegebenen
OUT Parameter. Besitzt die Tabelle Partitionen, wird die Ratio pro Partition berechnet. In folgendem Beispiel wird die Partition COSTS_Q1_1998 der Tabelle COSTS des Users SH überprüft.
Der überprüfte Komprimierungstyp ist die OLTP Komprimierung.
Hinweis: Es müssen ausreichende Zugriffsrechte und Platz im Tablespace SCRATCHTBSNAME existieren.
Am Besten führt man die Prozedur daher mit einem User aus, der DBA-Privilegien besitzt.
Das Ergebnis zeigt, dass durch den Einsatz von OLTP Komprimierung eine Ratio von 2 erreicht werden kann.
Bestimmung der Compression Ratio: weitere Komprimierungsarten
Ein Blick in das Handbuch (siehe Tabelle mit Komprimierungstypen) zeigt, dass auch die neuen Exdata Hybrid Columnar
Compression (kurz EHCC) Komprimierungsarten in 11g Release 2 mit diesem Package überpüft werden können.
Der Test ist möglich ohne Zugriff auf ein Exadata Storagesystem zu besitzen und ab Version 11.2.0.2 auch ohne
eine zusätzliche Installation von Patches möglich. Eine Tabelle kann also auf
das Einsparungspotential von vier weiteren Komprimierungstypen überprüft werden.
Im folgenden Beispiel wurde die Tabelle SALES_BIG aus der Tabelle SALES erzeugt und vergrössert. Der Test
überprüft die Nutzung der HCC Komprimierung für den Archive Modus.
Folgendes Beispiel zeigt die Verwendung.
Das Ergebnis sieht dann folgendermassen aus.
Für eine größere Ansicht auf das Bild klicken.
Hinweis: Die Grösse der Tabelle sollte für den Test mit EHCC Komprimierung geeignet
sein und mindestens 1 000 000 Zeilen speichern.
Nun stellt sich die Frage wie der Compression Advisor intern arbeitet. Generell werden zwei temporäre Tabellen
im Tablespace SCRATCHTBSNAME erstellt, die nach der Berechnung der Ratio wieder gelöscht werden. Um die Verwendung
der Ressourcen zu begrenzen, ist bei der EHCC Komprimierung die Anzahl der verwendeten Zeilen auf 1 000 000 Zeilen
limitiert.
Bestimmung des Komprimierungstyps
Mithilfe des Funktion GET_COMPRESSION_TYPE kann sogar im Nachhinein der Komprimierungstyp einer bestimmten Zeile bestimmt
werden. Dazu ist die Angabe der ROWID einer Tabelle erforderlich.
Das Ergebnis ist eine Zahl, die den jeweiligen Komprimierungstyp angibt (siehe Tabelle mit Komprimierungstypen).
Folgendes Beispiel zeigt eine Anwendung.
Unterstützung durch den automatischen Segment Advisor
In 11g Release 2 ist die Funktionalität des automatischen Segment Advisors
um die Empfehlung für OLTP Compression erweitert worden. Unter bestimmten Umständen
beispielsweise Grössße der Tabelle und Grösse der Platzeinsparung kann der automatische Segment
Advisor nun auch OLTP Komprimierung als Empfehlung anzeigen und liefert ein Skript zur Durchführung.
Kurz zur Erinnerung: Mit Oracle 10g ist der sogenannte Segment Advisor eingeführt worden,
der Platzverschwendung bzw. Row-Chaining eines Segments anzeigt und zusätzlich Skripte generiert, um
Abhilfe beispielsweise mit SHRINK-Operationen zu schaffen. Der Segment Advisor kann dabei manuell
über Packages oder automatisch in der täglich laufenden "Automatic Maintenance Task" ausgeführt werden.
Folgender Ausschnitt zeigt das Ergebnis des automatischen Segment Advisor Laufs auf der
Homepage der Enterprise Manager Console.
Für eine größere Ansicht auf das Bild klicken.
Folgende Screenshot-Serie zeigt die Empfehlung in mehreren Schritten an. Im ersten Schritt wird die
Platzeinsparung im Tablespace USERS angegeben.
Für eine größere Ansicht auf das Bild klicken.
Klickt man auf den "Recommendation Details" Button werden die Segmente und das Einsparungspotential sichtbar.
In unserem Fall handelt es sich um das Segment PROM_EXA, das 120 MB gross ist, 4 Indizes besitzt und durch
OLTP Komprimierung 56 MB weniger Platz beanspruchen könnte:
Für eine größere Ansicht auf das Bild klicken.
Im letzten Screenshot sind die Kommandos aufgelistet, die zur Implementierung notwendig sind und automatisch
über einen Scheduler Job ausgeführt werden können.
Für eine größere Ansicht auf das Bild klicken.
Tipps und Hinweise
Nicht unberücksichtigt sollten folgende Faktoren bleiben, da sie die Komprimierung wesentlich
beeinflussen können.
- Wahl der Blockgrösse des Tablespace
- Sortiertes Laden
- Ladevorgang als Bulk Load
Auch Indizes und unstrukturierte Daten nehmen einen Anteil am gesamten Speicherplatz ein und sollten
in die Berechnung einfliessen. Der Compression Advisor liefert allerdings im aktuellen Release dazu
keine Unterstützung. Bei Verwendung von unstrukturierten Daten ist es daher notwendig,
die Compression Ratio durch Vergleich von komprimierten und unkomprimierten Daten über die
Data Dictionary Views zu überprüfen. Der Tipp LOB-Management in 11g: Einstieg in die Nutzung von SECUREFILEs zeigt
ein Anwendung. Weitere Informationen zu den Themen rund um das Einsparen von Speicherplatz in der Datenbank finden Sie
beispielsweise auch in folgenden Beiträgen.
Mehr zu diesem Thema bzw. zu weiteren Themen rund um die Datenbank lesen Sie in den nächsten Ausgaben ...
Zurück zur Community-Seite
|