Access optimieren

Autor: Klaus Giesen, Wuppertal

Der Wunsch nach Optimierung von Access-Datenbanken zur Beschleunigung der Informationsbeschaffung ist verständlich und liegt nahe. Schließlich soll eine Datenbankanwendung so schnell wie möglich laufen bzw. die Informationsbeschaffung so schnell wie möglich stattfinden – also eine hohe Performance bieten. Die grundlegende Voraussetzung für eine schnellere, optimierte Datenbankanwendung liegt dabei zum größten Teil im Know-how des Entwicklers. Der folgende Beitrag beschäftigt sich mit den unterschiedlichen Möglichkeiten zur Beschleunigung einer Access-Datenbank.

Optimierung ist die Einstellung von Größen, Eigenschaften und zeitlichen Abläufen zur Steigerung von Qualität und Geschwindigkeit von Prozessen. Diese Definition ist natürlich mit den Wünschen an eine Datenbankanwendung identisch. Dabei gibt es grundsätzlich zwei Ansatzpunkte für mögliche Anpassungen: die Hard- und die Software.

Bei vielen Windows-Anwendungen sind Leistungssteigerungen sehr einfach zu erreichen, indem Sie beispielsweise in Ihren PC eine höher getaktete CPU oder mehr Hauptspeicher einbauen.

Bei einer Access-Datenbank ist diese Vorgehensweise zwar empfehlenswert, aber oft nicht ausreichend. Der Grund dafür liegt nahe: Eine Datenbank-Anwendung hat primär die Aufgabe, große Datenmengen anzuzeigen und zu verarbeiten. Im Hinblick auf die Performance kommt es hier primär auf die optimale Organisation der Daten an. Dies bedeutet, dass schon beim Erstellen des Datenmodells, also dem Grundgerüst einer Datenbank, gravierende Fehler auftreten können. Daraus ergibt sich folgende Konsequenz:

Die Geschwindigkeitsoptimierung einer existierenden Access-Datenbank lässt sich nicht auf einen Schlag erreichen; den berühmten großen Wurf gibt es in diesem Zusammenhang einfach nicht.

Deswegen besteht auch der Optimierungsprozess aus einer Vielzahl von Einzelschritten, die systematisch mit dem nötigen Know-how nacheinander abgearbeitet werden müssen.

Das gewünschte Ziel ist also nur durch die Addition vieler kleiner Optimierungsschritte zu erreichen.

Jede Optimierung sollte bei Ihrem Computersystem beginnen. Zumindest sollten Sie überprüfen, ob Ihr System den gängigen Anforderungen entspricht, und dort gegebenenfalls nachbessern.

Falls Sie eine umfangreiche Access 2000-Anwendung beispielsweise auf einem 100 MHz Pentium mit 32 MByte RAM – so etwas war mal ein schneller Rechner! – laufen lassen wollen, sollten Sie erst dann ernsthaft weiterlesen, nachdem Sie Ihre Hardwareausstattung aktualisiert haben.

Der PC

Doch was heißt das konkret Nun, der heutzutage an jeder Ecke angebotene so genannte Multimedia-PC braucht es überhaupt nicht zu sein. Um mit Access vernünftig arbeiten zu können, sollten Sie aber mindestens über folgende Ausstattung verfügen:

  • Eine 300 MHz CPU
  • Unter Windows 98/ME benötigen Sie 64 MByte (besser 128 MByte) RAM und unter Windows NT/2000/XP auf jeden Fall 128 (besser 256) MByte RAM.
  • eine schnelle Festplatte (kurze Zugriffszeit und hohe Datentransferrate)
  • Das ist nach aktuellen Maßstäben eigentlich sehr wenig und deshalb ohne Weiteres erschwinglich.

    Die Rolle der Festplatte

    Die Festplatte spielt hier übrigens eine wesentliche Rolle, da sie letztendlich der Flaschenhals für alle Lese- und Schreibvorgänge ist. Daher beachten Sie folgende Tipps:

  • Defragmentieren Sie regelmäßig Ihre Festplatte (beispielsweise einmal wöchentlich).
  • Verzichten Sie auf Software zur Festplattenkomprimierung oder speichern Sie Ihre Datenbanken auf einem unkomprimierten Laufwerk.
  • Abb. 1: Datenbank exklusiv öffnen

  • Falls Sie bereits 128 MB Hauptspeicher oder mehr und noch etwas Geld übrig haben, rüsten Sie damit lieber Ihre Festplatte anstatt den Speicher auf. Ideal ist eine moderne SCSI-Festplatte mit weniger als 5ms Zugriffszeit. Wenn Sie dann immer noch Geld übrig haben, rüsten Sie Ihren Hauptspeicher auf.
  • Parallel zu Optimierung der Hardware sollten Sie Ihre Access-Datenbank einer genaueren Untersuchung unterziehen. Hier versucht Access, Sie mit dem Assistenten zur Leistungsanalyse zu unterstützen.

    Dieser Assistent kann entweder die gesamte Datenbank oder einzelne Datenbankobjekte analysieren und Optimierungsvorschläge machen. Falls Sie es wünschen, kann der Leistungsanalyse-Assistent außerdem einige änderungen automatisch vornehmen. Der Assistent ist weitgehend selbsterklärend und soll daher nicht weiter erläutert werden.

    Dass der Assistent zur Leistungsanalyse seine klaren Grenzen hat und für einen engagierten Access-Anwender nur einen Einstieg bieten kann, liegt auf der Hand. Außerdem ist es ohnehin günstiger, die entsprechenden änderungen von Hand durchzuführen, da der Assistent nicht zwangsläufig nur sinnvolle Vorschläge macht.

    Alleiniger Zugriff auf Datenbanken

    Falls nur Sie alleine auf eine Access-Datenbank zugreifen, platzieren Sie diese in jedem Fall auf Ihrer lokalen Festplatte und nicht etwa auf einem Netzwerk-Laufwerk.

    Gleichzeitig öffnen Sie die Datenbank zur exklusiven Verwendung.

    Abb. 2: Einstellung der automatischen Komprimierung beim Schließen der Datenbank

    Klicken Sie dazu im Dialogfenster öffnen auf das nach unten gerichtete Dreieck neben der Schaltfläche öffnen und markieren Sie den Eintrag Exklusiv öffnen (s. Abb. 1).

    Datenbank komprimieren

    Verschiedene Aktionen wie z. B. das Löschen von Daten in Tabellen und das Zwischenspeichern von Daten in temporären Tabellen führen zum Aufblähen der Datenbank, da gelöschte Daten nicht komplett aus der Datenbank entfernt werden.

    Durch das Komprimieren einer Access-Datenbank über den Menübefehl Extras ( Datenbank-Dienstprogramme ( Datenbank komprimieren und reparieren können Sie die angesammelten Fragmente wieder entfernen.

    Praxis-Tipp

    Sie können unter Access 2000 das Komprimieren automatisch beim Schließen der aktuellen Datenbank ausführen, indem Sie über Extras/Optionen das Dialogfenster Optionen öffnen. Aktivieren Sie dann im Register Allgemein das Kontrollkästchen Beim Schließen Komprimieren (s. Abb. 2).

    Außerdem ordnet Access beim Komprimieren die Datensätze in einer Tabelle optimal an und organisiert die Indextabellen neu.

    Deshalb können auch Abfragen durch das Komprimieren beschleunigt werden. Zusätzlich sollten Sie jedoch nach einer Komprimierung jede Abfrage erneut ausführen, damit diese auf Grundlage der aktualisierten Tabellenorganisation neu kompiliert wird.

    Datenbank in MDE-Datei konvertieren

    Bei der Konvertierung einer Datenbank in eine MDE-Datei wird der Zugriff auf die Entwurfsansicht von Formularen, Berichten und Seiten sowie auf den VBA-Code verhindert.

    Darüber hinaus wird auch die Datenbankdatei verkleinert. Als Nebeneffekt dieser optimierten Speichernutzung ergibt sich eine Leistungssteigerung.

    Die Konvertierung erfolgt wieder über das Menü Extras/Datenbank-Dienstprogramme. Wählen Sie dort den Befehl MDE-Datei erstellen aus.

    Makros konvertieren

    Konvertieren Sie eventuell vorhandene Makros zu VBA-Code, da VBA-Code wesentlich schneller als Makro-Code ausgeführt wird. Dazu benötigen Sie noch nicht einmal VBA-Kenntnisse, denn Access stellt auch hierfür einen Assistenten zur Verfügung.

  • Markieren Sie das betreffende Makro im Datenbankfenster.
  • Wählen Sie aus dem Menü Extras den Befehl Makro ( Makros zu Visual Basic konvertieren aus.
  • Lassen Sie im nachfolgenden Dialogfenster Konvertiere Makro die Voreinstellungen bestehen und klicken Sie auf die Schaltfläche Konvertieren (s. Abb. 3).
  • Access konvertiert das Makro und erstellt ein neues Modul mit dem Namen Konvertiertes Makro- [Makroname].

    Abb. 3: Das Dialogfenster Konvertiere Makro

    Wie bereits angedeutet, spielt die Datenstruktur einer Datenbank eine wesentliche Rolle für die Performance.

    Die Erläuterung der Normalisierung einer Datenbank würde den Rahmen des vorliegenden Beitrags sprengen. Detaillierte Informationen zu diesem Thema finden Sie allerdings im Praxishandbuch, und zwar in Kapitel 3 des Beitrags Anwendungsentwicklung mit Access (Gruppe 2.2).

    Nach dem Entwurf des Datenmodells betrachten wir im Folgenden die Optimierungsmöglichkeiten beim Tabellenentwurf.

    Grundsätzliches

    Jede Tabelle sollte zur eindeutigen Identifikation eines Datensatzes ein Primärschlüsselfeld besitzen. Die Anwendung kann so schnell auf den betreffenden Datensatz zugreifen. Außerdem ist ein Primärschlüsselfeld zwingend notwendig, wenn diese Tabelle Bestandteil einer Beziehung sein soll.

    Auswahl der Datentypen

    Wählen Sie die Datentypen so aus, dass diese von der Größe her soeben für ihren Anwendungszweck ausreichen und keinen unnötigen Speicherplatz verschwenden. Dazu zwei Beispiele:

    Zum Speichern einer Ganzzahl stehen Ihnen die Feldgrößen Byte, Integer und Long Integer zur Verfügung.

    Für diese drei Datentypen gelten die Eigenschaften aus Tab. 1.

    Datentyp

    Wertebereich

    Speicherplatz

    Byte

    0 bis 256

    1 Byte

    Integer

    -32.768 bis 32.767

    2 Bytes

    Long Integer

    -2.147.483.648 bis 2.147.483.647

    4 Bytes

    Tab. 1: Gegenüberstellung numerischer Datentypen mit ihren Eigenschaften

    Betrachten Sie zunächst den Wertebereich. In vielen Fällen kann schon im Voraus abgesehen werden, wie groß der Zahlenwert maximal werden kann, der in einem Feld gespeichert werden soll. Bei der Abteilungsgröße kann zum Beispiel ohne Weiteres abgeschätzt werden, ob die Anzahl der Mitarbeiter in Zukunft auf über 256 steigen wird.

    Falls Sie zu einem späteren Zeitpunkt feststellen, dass die Feldgröße für die aktuellen Anforderungen zu klein ist, können Sie die Feldgröße ohne Probleme bei Bedarf nachträglich vergrößern.

    Bei Feldern mit dem Datentyp Text wird in der Regel eine Feldgröße von 50 Zeichen voreingestellt. Sie sollten bei jedem Feld einzeln prüfen, ob diese Feldgröße wirklich erforderlich ist.

    Zum Speichern einer deutschen Postleitzahl macht dies beispielsweise überhaupt keinen Sinn, weil dazu fünf Zeichen ausreichen.

    Je kleiner ein Feld, desto weniger Platz wird belegt. Dies nutzt der Performance.

    Indizes

    Alle Felder einer Tabelle, über die verknüpft, sortiert oder gefiltert wird, sollten zur Geschwindigkeitsoptimierung indiziert sein. Wenn Sie beispielsweise nach einem Feld suchen, das nicht indiziert ist, muss Access einen „table scan“ durchführen. Dies bedeutet, dass die komplette Tabelle geladen und jeder Wert verglichen werden muss.

    Beim Einsatz eines Index legt Access intern eine sortierte Indextabelle an, die schnell geladen und durchsucht werden kann. Jeder Eintrag dieser Index-Tabelle enthält einen Zeiger auf den Datensatz der Haupttabelle.

    Abb. 4: Mehrfelder-Index

    Es gilt allerdings auch, dass das Anfügen und Löschen von Datensätzen bei indizierten Feldern länger dauert, weil auch die jeweiligen Indextabellen aktualisiert und neu sortiert werden müssen.

    Deshalb sollten Sie auch nur die wirklich benötigten Felder der Tabelle indizieren.

    Mehrfelder-Indizes

    Eine Tabelle kann auch mehrere Indizes gleichzeitig haben. Ein solcher Mehrfelder-Index bietet sich immer dann an, wenn in einer Abfrage oft nach derselben Feldkombination gesucht oder sortiert wird.

    Bei der Tabelle tblPersonal der Beispieldatenbank trifft dies auf die Felder txtNachname und txtVorname zu (s. Abb. 4).

    Achten Sie aber darauf, zu einem Mehrfelder-Index nur die unbedingt notwendigen Felder hinzuzufügen.

    Zusammenfassung

    Das Abwägen der Vor- und Nachteile bei der Verwendung von Indizes stellt ein echtes Optimierungsproblem dar. Orientieren Sie sich an den folgenden Richtlinien:

  • Verringern Sie die Anzahl von Indizes für diejenigen Tabellen, in denen überwiegend Daten aktualisiert, gelöscht und eingefügt werden, auf ein Minimum. Dies gilt auch für Tabellen, deren Datensätze mit Lösch- oder Anfügeabfragen aktualisiert werden.
  • Tabellen, die viele Datensätze enthalten und die oft durchsucht bzw. sortiert werden, sollten entsprechend indizierte Felder enthalten.
  • Indizieren Sie auf jeden Fall die Fremdschlüssel von Detailtabellen. Dies erhöht die Abfrage von verknüpften Tabellen dramatisch.
  • Eingebundene Tabellen

    Bei eingebundenen Access-Tabellen gibt es einige zusätzliche Besonderheiten zu beachten.

    Die Verwaltung verknüpfter Tabellen in Access erfordert im Allgemeinen etwas mehr Aufwand. Der Grund dafür ist einfach in der Tatsache begründet, dass es sich in diesem Fall um eine externe Datei handelt und deshalb häufigere Dateizugriffe notwendig sind.

    Die Beachtung folgender Richtlinien kann den Bearbeitungsaufwand bei eingebundenen Tabellen minimieren:

  • Vermeiden Sie in der Formular- oder Datenblattansicht überflüssige Datensatzwechsel – vor allem das Springen zwischen dem ersten und letzten Datensatz.
  • Verwenden Sie als Datenherkunft für Formulare entsprechend aufgebaute Abfragen anstelle von Tabellen, um die Anzahl der Datensätze einzuschränken.
  • Verwenden Sie in Abfragen, die auf verknüpften Tabellen basieren, möglichst keine Funktionen als Kriterien. Sehr belastend auf die Performance wirken sich dabei die so genannten Domänenfunktionen wie z. B. DomSumme aus.
  • Wägen Sie ab, ob die Verwendung eines reinen Eingabeformulars in der Anwendung Sinn machen könnte. Wenn Sie die Formulareigenschaft Daten eingeben auf Ja einstellen, werden keine Datensätze angezeigt und somit müssen keine Daten in das Formular eingelesen werden.
  • Abb. 5: Ausgewählte Felder im Abfrageentwurf

    Abfragen bieten Ihnen verschiedene Möglichkeiten zur Optimierung an. Da überdies Abfragen normalerweise in einer Datenbankanwendung in größerer Anzahl verwendet werden, ist dieser Abschnitt auch einer der Schwerpunkte dieses Beitrags.

    Ausgabemenge von Abfragenbeschränken

    Verzichten Sie darauf, beim Entwurf einer Abfrage das * (Symbol für alle Felder) in den Abfrageentwurf zu ziehen.

    Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
    Hier geht es zur Bestellung des Jahresabonnements des Magazins Access im Unternehmen:
    Zur Bestellung ...
    Danach greifen Sie sofort auf alle rund 1.000 Artikel unseres Angebots zu - auch auf diesen hier!
    Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

    Schreibe einen Kommentar