
|
ASM Automatic Storage Management. ASM ist ein im Oracle Kernel integrierter Volume Manager. Er ist ab Oracle 10g verfügbar und arbeitet nach dem SAME-Prinzip (stripe and mirror everything). ASM kann als zentraler Storage für RAC-Systeme verwendet werden. |
|
DML Data Modification Language. Über DML-Kommandos werden Daten (Zeilen) in Tabellen eingefügt, gelöscht oder geändert. |
|
LOB Large Object. Datentyp zur Aufnahme großer Datenmengen. LOB ist der Sammelbegriff für alle Large Objects, wie BLOB, CLOB, NCLOB und BFILE. |
|
OLTP Online Transaction Processing. Oft handelt es sich hierbei um Multiuser- Anwendungen zur Datenerfassung oder -aktualisierung, die sehr kurze Antwortzeiten verlangen. |
|
XML Extensible Markup Language (XML). XML ist eine so genannte Meta-Sprache zur Beschreibung von Dokumenten. Ein Vorteil von XML ist der vereinfachte Austausch von Daten, da XML-Formate in einer strengen Grammatik definiert werden können, und so die Implementierung von zuverlässigen Schnittstellen erlaubt. |
Weiterführende Links
| ||||||||||||
| Abb. 1: Historie der verschiedenen Oracle Features zur Datenkompression. | ||||||||||||
|
||||||||||||
| Abb. 2: Normaler Block vs. komprimierter Block. | ||||||||||||
|
||||||||||||
| Abb. 3: Batch-Mode-Komprimierung bei 11g. | ||||||||||||
|
||||||||||||
| Abb. 4: Deduplikation innerhalb von SecureFiles. | ||||||||||||
Durch die Option compress for direct_load operations wird die Oracle 9i R2 Compression aktiviert. Durch den starken Overhead bei der Komprimierung war diese Funktion im Wesentlichen für das Data-Warehouse-Umfeld geeignet, da bei dieser Option (direct_load) nur die Daten beim Insert komprimiert werden. Durch spätere Änderung - ausgelöst durch weitere DML-Befehle - werden die einzelnen Sätze wieder dekomprimiert. Diese Option ist somit nur für Daten sinnvoll, die geladen werden und nicht mehr bzw. kaum noch verändert werden, wie z. B. im Data-Warehouse-Umfeld.
Bereits seit Oracle 8i ist Index Key Compression verfügbar. Diese Art der Komprimierung kann bei B*Tree Indizes und Index Organized Tables (IOT) eingesetzt werden. Index Key Compression verringert sich wiederholende Einträge in Indexblöcken (der Leaf-Ebene). Dies kann natürlich nur bei Non-Unique Indizes zum Erfolg führen.
Die Komprimierung erfolgt auf Blockebene. Mehrfacheinträge im Datenblock werden nur einmal gespeichert. Ein Pointer im Datenteil des Blocks referenziert auf eine Symboltabelle, in der die sich wiederholenden Werte gespeichert werden. Diese Symboltabelle befindet sich in einem dafür reservierten Bereich innerhalb des Blocks. Der restliche Platz steht den eigentlichen Daten zur Verfügung (siehe Abbildung 2).
Durch diese Methode können mehr Datensätze in einen Block geschrieben werden. Der Speicherplatz auf der Platte wird dadurch reduziert. Durch mehr Daten pro Block werden auch mehr Daten im Speicher gehalten. Das sorgt für weniger Buffer-Get-Operationen und dadurch minimiert sich die I/O- und CPU-Last beträchtlich.
Diese Methode, die bereits bei der BulkCompression-Methode von Oracle 9i verwendet wurde, wird technisch identisch ebenfalls für die neue Methode verwendet: compress for all operations
In Oracle 11g werden mit Hilfe der Option "Advanced Compression" nun alle DML-Operationen bei Komprimierungen unterstützt. Dadurch fallen die bisherigen Einschränkungen auf Bulk-Load-Operationen weg. Die Komprimierung wird ohne Rücksicht auf die Art der Ladevorgänge garantiert. Durch den Zusatz compress for all operations wird die Methode aktiviert. Die Komprimierung erfolgt im so genannten Batch Mode. Die Daten bleiben somit bei der Befüllung des Blocks unkomprimiert. Sobald die Befüllung des Blocks die PCTFREE-Grenze erreicht hat, werden die Daten komprimiert. Neue Daten werden in umkomprimierter Form eingefügt. Beim erneuten Erreichen der PCTFREE-Grenze wird sofort das Komprimieren ausgelöst. Dieser Prozess setzt sich solange fort, bis der Block komplett mit komprimierten Daten gefüllt ist (siehe Abbildung 3).
Die Komprimierung kann auf Tablespace-, Tabellen- oder Partitionsebene eingeschaltet werden. Dies geschieht durch das entsprechende CREATE-Kommando. Die Komprimierung kann allerdings auch im Nachhinein über ein ALTER-Kommando modifiziert werden. Das nachträgliche Umsetzen führt nicht zur sofortigen Reorganisation der betroffenen Tabellen.
Die Blöcke weden immer dann komprimiert, wenn die jeweilige PCTFREE-Grenze überschritten wird. Das komplette Komprimieren von bereits existierenden Tabellen kann durch das Kommando alter table ... move realisiert werden. Eine weitere Möglichkeit bietet das Packages DBMS_Redefinition. Hiermit kann die Reorganisation ohne Sperren online erfolgen.
Die Komprimierungsrate der einzelnen Tabellen ist natürlich sehr unterschiedlich. Dies ist stark von folgenden Faktoren abhängig:
Je mehr Duplikate in einem Block innerhalb der Spalten auftreten, desto größer wird der zu erreichende Effekt der Komprimierung sein.
Unstrukturierte Daten (XML, DOC, PDF) sind sehr speicherintensiv. Eine Komprimierung ist hier sehr sinnvoll. In Oracle 11g ist die Funktionalität "Oracle SecureFiles" hinzugekommen. Oracle SecureFiles ist ein optimierter Speichermechanismus für LOB-Daten. Durch den Zusatz store as securefile im Kommando create table kann diese Funktion genutzt werden. Die folgenden beiden Einstellungen zur Komprimierung sind möglich:
Die LOB-Komprimierung wird durch die SecureFile-LOB-Storage-Klausel angegeben. Basic-Files, die herkömmliche Speichermethode für LOBs, können mit dieser Methode nicht komprimiert werden. SecureFiles können nur in Verbindung mit Automatic Segment Space Management (ASSM) [3] genutzt werden. Die Komprimierung erfolgt für den Anwender transparent und kann beliebig mit anderen Oracle-Technologien, wie RAC, Automatic Storage Management (ASM) [4] oder Partitioning, kombiniert werden.
Schon seit Oracle 8i kann die Funktion "Index Key Compression" eingesetzt werden. Table Compression findet seit Oracle 9i Verwendung. Gerade im Data-Warehouse-Umfeld zählt Compression seit langer Zeit zu den Schlüsselfunktionen. Mit Advanced Compression sind diese um wichtige Funktionen erweitert worden. Die Verbesserungen machen die Komprimierung unabhängig vom Application Workload. Dadurch wird die Komprimierung nun auch zu einem wichtigen Feature für den OLTP-Betrieb. Mit SecureFiles wird es nun auch möglich, unstrukturierte Daten zu komprimieren. Die Praxis zeigt, dass der Mehrwert der Komprimierung meist unterschätzt wird. Ein kleiner Wermutstropfen bleibt allerdings: Die Funktion Advanced Compression unter Oracle 11g ist lizenzpflichtig.
Klaus Reimers (info@ordix.de).