Optimierung von Datenbanken

SQL: Indexkompression und effiziente Speichertechnologie

Das Komprimieren von Datenbanken senkt nicht nur den Platzbedarf, sondern erhöht auch die Performance. Im zweiten und letzten Teil unserer Serie gehen wir auf die Indexkomprimierung und Spezialverfahren wie die Row Compression ein.

Alternativ zur in Teil 1 vorgestellten Tabellenkompression bietet sich die Index Key Compression an. Auf dieses Verfahren treffen die Einschränkungen wie etwa die Nutzung nur bei Read-Only-Tabellen nicht zu. Zunächst mag man annehmen, dass die Kompression der Indextabellen wenig Platzeinsparung bringen könnte. Doch belegen beispielsweise in SAP-Systemen die Indizes rund ein Drittel des Speicherplatzes, sodass hier ein erhebliches Einsparpotenzial besteht.

Die Index Key Compression steht für B Tree Indizes und vor allem für indexorganisierte Tabellen (IOT) zur Verfügung. IOTs sind dadurch charakterisiert, dass es dort keine Zweiteilung in einen Indexbereich und einen Datenbereich gibt. Die Daten liegen gemeinsam mit dem Index in einem Segment. Im Unterschied zur normalen Tabelle mit Index gibt es in den Leaf-Blöcken des Indexbaums keine Zeiger auf die Daten, sondern die Datensätze selbst sind dort gespeichert – sortiert nach den Kriterien des Primärschlüssels.

Eine IOT bietet sich immer dann an, wenn die Spalten des Primärschlüssels einen deutlichen Anteil am gesamten Datensatz ausmachen, beispielsweise in einfachen Adressentabellen. Dann ist in vielen Fällen schon alleine durch die Verwendung einer IOT eine Platzersparnis gegenüber der Verwendung einer normalen Tabelle mit Index zu erwarten.

In SQL wird das Anlegen einer IOT über die Option ORGANIZATION INDEX initiiert:

CREATE TABLE tab-name (......) ORGANIZATION INDEX;

Dabei ist der Primärschlüssel zwingend notwendig, weil er das Ordnungskriterium für die Datensätze ist.

Inhalt der Miniserie

Teil 1: Kompression von Daten und Tabellen

Teil 2: Indexkompression und effiziente Speichertechnologie