## Belegungsausgleich

### Verwendung

In folgenden Fällen ändert das Datenbanksystem die Struktur eines B*-Baums:

● Beim Ändern oder Einfügen eines Datensatzes ist in der der Blattseite nicht genügend Platz vorhanden.

Das Datenbanksystem fügt eine neue Blattseite ein und verteilt die Datensätze neu.

Die Größe einer Tabelle ist also nur durch den insgesamt verfügbaren Speicherplatz im Datenbereich begrenzt.

● Nach dem Löschen von Datensätzen ist eine Blattseite nicht mehr ausreichend gefüllt.

Das Datenbanksystem löscht die Blattseite und verschiebt die Datensätze auf andere Blattseiten.

● Das Ändern oder Einfügen eines Datensatzes hat zur Folge, dass die Separatoren auf der nächst höheren Ebene nicht mehr eindeutig sind.

Das Datenbanksystem verteilt die Separatoren neu.

Durch das Hinzufügen oder Löschen von Blattseiten kann es dazu kommen, dass einige Zweige des B*-Baums deutlich mehr Seiten als andere Zweige haben. Eine solche uneinheitliche Verteilung der Seiten verschlechtert die Performance des Datenbanksystems, weil bei der Suche nach Daten in Zweigen mit vielen Seiten mehr Zugriffe erforderlich sind als in Zweigen mit wenigen Seiten.

Das Datenbanksystem erkennt solche uneinheitlichen Verteilungen und führt automatisch einen Belegungsausgleich durch (Reorganisationsfreiheit).

Die folgende Abbildung zeigt, wie das Datenbanksystem bei einer INSERT-Anweisung die B*-Baumstruktur verändert.

Beispiel für die Aufteilung einer Seite auf der Blattebene

In der Tabelle ADDRESS ist die Spalte CITY als Primärschlüssel definiert. Ein Benutzer fügt mit einer INSERT-Anweisung einen neuen Datensatz mit dem Wert Albas für die Spalte CITY ein. Der Datensatz ist jedoch zu groß für die entsprechende Blattseite im B*-Baum. Das Datenbanksystem führt deswegen folgende Aktionen durch:

...

1. Das Datenbanksystem legt eine neue Blattseite an und fügt den neuen Datensatz in die neue Blattseite ein. Die Sortierung der Einträge auf der neuen Blattseite beginnt also mit dem neuen Datensatz.

2. Wenn notwendig, kopiert es nun alle Datensätze, die zum Sortierbereich der neuen Blattseite gehören, aus der alten Blattseite auf die neue Blattseite und löscht sie dann aus der alten Blattseite. Dieser Vorgang wird als Seitensplit bezeichnet. Dann aktualisiert das Datenbanksystem die Positionslisten und die jeweiligen Zeiger auf die Folgeseiten innerhalb der Blattebene.

3. Das Datenbanksystem fügt die Adressen- und Separatorinformationen der neuen Blattseite in die entsprechende Wurzel- oder B*-Baum-Indexseite auf der nächsthöheren Ebene ein.

○ Wenn die B*-Baum-Indexseite zu klein ist, dann fügt das Datenbanksystem auf dieser Indexebene eine neue B*-Baum-Indexseite ein.

○ Wenn die Wurzelseite auf der obersten Ebene zu klein ist, dann legt das Datenbanksystem eine neue B*-Baum-Indexebene an.

Siehe auch:

Logische Zugriffsstrukturen

Beispiel: INSERT-Anweisung