Tipp 1.21 - Datenbank komprimieren

Warum soll ich meine Datenbank regelmäßig komprimieren?

Beim täglichen Umgang mit einer Datenbank nimmt diese stetig an Größe zu. Um die hohe Leistungsfähigkeit der Anwendung zu erhalten, verschiebt Microsoft Access das Entfernen verworfener Seiten aus der Datenbank, bis Sie die Datenbankdatei explizit komprimieren. Dies wiederum bedeutet, dass der von den gelöschten Objekten belegte Speicherplatz nicht unmittelbar wieder freigegeben wird. Die Konsequenz daraus ist nicht nur eine sehr umfangreiche Datenbank-Datei, sondern aufgrund von Fragmentierung schließlich auch eine starke negative Beeinträchtigung der Geschwindigkeit. Das Komprimieren Ihrer Datenbank bewirkt folgendes:

  • Es wird der gesamte Speicherplatz zurückgewonnen, der von gelöschten Daten und Datenbankobjekten belegt wurde.
  • Es kommt zu einer Neustrukturierung der Datenbank-Datei, so dass die Seiten jeder Tabelle in der Datenbank fortlaufend abgelegt sind. Dies führt zu einer besseren Geschwindigkeit, weil Tabellendaten beim Umgang mit Tabellen nacheinander auf dem Datenträger zu finden sind.
  • Es werden alle Autowerte bzw. Zählerfelder zurückgesetzt, so dass der nächste Wert genau um 1 größer ist, als der letzte ungelöschte Wert.
  • Es kommt zur Aktualisierung der Tabellenstatistiken, die von der Jet-Engine beim Ausführen von Abfragen verwendet werden.
  • Das System sorgt dafür, dass alle Abfragen bei der nächsten Ausführung neu kompiliert werden.

Die beiden zuletzt genannten Aspekte sind sehr wichtig. Falls den Tabellen nämlich Indizes hinzugefügt wurden oder sich der Umfang der Tabellendaten drastisch verändert hat, würden die Abfragen nicht mehr effektiv ausgeführt werden. Die Ursache für diese Beeinträchtigung der Leistung besteht darin, dass in solchen Fällen der von Jet für die Ausführung genutzte gespeicherte Abfrageplan auf ungenauen Informationen basiert. Beim Komprimieren der Datenbank werden alle Tabellenstatistiken und der Abfrageplan so aktualisiert, dass sie den aktuellen Zustand der Tabellen in der Datenbank widerspiegeln.

HinweisHinweis: Sie haben im Moment keine Zeit, möchten sich aber später mit dem Thema beschäftigen? Kein Problem, hier erhalten Sie das Tutorial als PDF-Dokument (ab Acrobat Version 5.0):


Weg mit dem ungenutzten Speicher

Um eine Datenbank zu komprimieren, können Sie von einer der drei folgenden Methoden Gebrauch machen:

  1. Verwenden Sie den Befehl im Menü ExtrasDatenbank-DienstprogrammeDatenbank komprimieren und reparieren
  2. Richten Sie die Datenbank so ein, dass sie bei jedem Schließen komprimiert wird. Den Befehl dazu finden Sie im Menü ExtrasOptionen – Register Allgemein – Checkbox Beim Schließen komprimieren
  3. Benutzen Sie die Methode CompactDatabase (siehe Online-Hilfe dazu oder in den Externer Link FAQ’s von Karl Donaubauer).

HinweisHinweis: Wenn Sie sich für die 2. Option über Extras – Optionen entscheiden, betrifft die Einstellung Beim Schließen komprimieren nur die beim Auswählen der Option geöffnete Datenbank. Auf diese Weise können Sie sich aussuchen, welche Datenbanken beim Schließen komprimiert werden sollen. Bedenken Sie aber, dass das Komprimieren beim Schließen voraussetzt, dass alle unten genannten allgemeinen Bedingungen für das Komprimieren erfüllt sind. Falls nicht, erhält der Benutzer, der das Schließen initiiert hat, eine Fehlermeldung.

Unabhängig davon, für welche Methode Sie sich entscheiden, müssen die folgenden Bedingungen erfüllt sein, bevor  Sie Ihre Datenbank komprimieren:

  • Der Benutzer, der die Komprimierung durchführt, muss das Recht haben, die Datenbank exklusiv zu öffnen.
  • Der Benutzer muss die Berechtigung besitzen, sämtliche Tabellen in der Datenbank zu verändern.
  • Die Datenbank muss exklusiv geöffnet werden können, was bedeutet, dass  in dieser Zeit kein anderer Benutzer auf die Datenbank zugreifen kann.
  • Es muss sowohl für die Datenbank als auch für die komprimierte Version der Datenbank genügend Speicherplatz zur Verfügung stehen.
Schlussbemerkung

Es stellt eine sinnvolle Maßnahme dar, die Datenbank vor dem Versuch der Komprimierung zu sichern, da sie durch die Komprimierung beschädigt werden könnte. Missbrauchen Sie die Komprimierung auch nicht als Ersatz für umsichtige Sicherungsläufe. Die Komprimierung selbst verläuft nicht immer erfolgreich.

Wenn Access einmal feststellt, dass eine Datenbank beschädigt ist, werden Sie aufgefordert, die Datenbank zu reparieren. Eine solche Situation kann eintreten, wenn Sie versuchen, die beschädigte Datenbank zu öffnen, zu komprimieren, zu verschlüsseln oder zu entschlüsseln. Es kann aber auch vorkommen, dass Microsoft Access die Beschädigung nicht erkennt und Sie stattdessen vermuten, dass die Beschädigung auf ein unvorhergesehenes Datenbankverhalten zurückzuführen ist.