Der Begriff „Cluster“ wird in vielen Fachgebieten benutzt und bedeutet so viel wie „Anhäufung“ oder „Haufen“. So können in der Astronomie beieinanderliegende Sterne einen Sternen-Cluster bilden. In der EDV spricht man von einem Computer-Cluster als Verbund von Computern, die eng zusammenarbeiten, um gemeinsam ein Problem zu lösen (High Performance Computing Cluster) oder die Verfügbarkeit zu erhöhen (Failover-Cluster). Der Begriff „Cluster“ beschreibt also ganz generell zusammengehörige Dinge.
In der Informatik gibt es aber noch andere Cluster: die Daten-Cluster. Diese ordnen Daten so an, dass der Zugriff auf zusammengehörige Daten möglichst effektiv ist. Daten-Cluster sind daher ein wichtiges Mittel zur Optimierung von Datenbanken. Im Zusammenhang mit Datenbanken sind aber auch Computer-Cluster verbreitet. So könnte der Satz „Verwende einen Cluster, um die Datenbank-Performance zu verbessern“ sowohl einen Computer-Cluster als auch einen Daten-Cluster meinen. Um dieser Verwirrung vorzubeugen, sei angemerkt, dass ein Cluster in diesem Kapitel stets einen Daten-Cluster bezeichnet.
Die einfachsten Daten-Cluster in relationalen Datenbanken sind die Zeilen einer Tabelle. Sie werden – wenn möglich – im selben Datenblock abgespeichert. Nur wenn eine Zeile nicht in einen einzelnen Datenblock passt, wird sie auf mehrere aufgeteilt. Das ist vor allem bei LOB-Spalten der Fall.
Indizes bieten die Möglichkeit Daten gezielt zu clustern. Das zugrundeliegende Konzept wurde bereits in Kapitel 1, „Anatomie eines SQL Indexes“, vorgestellt: Ein Index ist eine sortierte Form der indizierten Daten. Ähnliche Werte werden nebeneinander abgelegt. Das bedeutet, dass ein Index einen Cluster aus Zeilen mit ähnlichen Werten bildet. Diese Fähigkeit, Daten zu clustern, ist so wichtig, dass ich sie als die „zweite Macht der Indizierung“ bezeichne.
Beachte
Das Durchwandern des Baumes ist die erste Macht der Indizierung.
Clustering ist die zweite Macht der Indizierung.
Die folgenden Abschnitte erklären, wie man diese Macht nutzt, um die Abfragegeschwindigkeit zu verbessern.