Anfang des Inhaltsbereichs

Hintergrunddokumentation Datenbanktabellen puffern   Dokument im Navigationsbaum lokalisieren

Die Pufferung einer Tabelle erhöht die Performance beim Zugriff auf die in der Tabelle enthaltenen Datensätze.

Die Tabellenpuffer befinden sich lokal auf jedem Applikationsserver des Systems. Zugriffe auf die Daten gepufferter Tabellen können damit direkt aus dem Puffer des Applikationsservers befriedigt werden. Zeitaufwendige Zugriffe auf die Datenbank werden dadurch eingespart.

Diese Grafik wird im zugehörigen Text erklärt

Die Pufferung ist insbesondere in Client/Server-Umgebungen wichtig, da hier die Zugriffszeit über das Netz wesentlich höher liegt als die Zugriffszeit auf eine lokal gepufferte Tabelle. Je nach Netzwerkbelastung beträgt dieser Faktor 10-100.

Diese Performancedifferenz ist in zentralen Systemen (Systemen mit nur einem Anwendungsserver) etwas geringer als in lokalen Systemen (Systemen mit mehreren Anwendungsservern), jedoch wirkt sich auch in zentralen Systemen die Einsparung von Prozeßwechseln und die gegenüber dem Datenbanksystem gezieltere Pufferung merklich auf die Performance aus.

Wie werden die Puffer gefüllt?

Greift ein Programm auf Daten einer gepufferten Tabelle zu, so wird über die Datenbank-Schnittstelle ermittelt, ob sich diese Daten im Puffer des Applikationsservers befinden. Ist dies der Fall, so werden die Daten direkt aus dem Puffer gelesen. Sind die Daten nicht im Puffer des Applikationsservers enthalten, so werden die Daten von der Datenbank gelesen und dabei in den Puffer geladen. Der nächste Zugriff auf diese Daten kann damit aus dem Puffer befriedigt werden.

Welche Sätze beim Zugriff in den Puffer geladen werden, ist durch die Pufferungsart bestimmt.

Diese Grafik wird im zugehörigen Text erklärt

Wie werden die lokalen Puffer synchronisiert?

Eine gepufferte Tabelle wird in der Regel auf allen Applikationsservern gelesen und dort im Puffer gehalten. Ändert ein Programm auf einem der Applikationsserver die in der Tabelle enthaltenen Daten, so wird dies durch die Datenbank-Schnittstelle in einer Protokolltabelle vermerkt. Auf allen anderen Applikationsservern haben die Puffer noch den alten Stand und die Programme lesen damit unter Umständen veraltete Daten.

In einem festen Zeitintervall, in der Regel alle 1-2 Minuten, läuft ein Synchronisationsmechanismus. Dabei wird die Protokolltabelle gelesen und die Pufferinhalte, die von anderen Servern verändert wurden, werden invalidiert. Beim nächsten Zugriff werden die Daten invalidierter Tabellen dann direkt von der Datenbank gelesen und im Puffer aktualisiert.

Verdrängung

Wenn durch Einlagern neuer Daten Platzbedarf im Puffer entsteht, werden diejenigen Daten verdrängt, auf die am längsten nicht zugegriffen wurde. Die Verdrängung findet asynchron zu bestimmten Zeitpunkten statt, die dynamisch anhand der Zugriffe auf den Puffer bestimmt werden. Verdrängung findet nur statt, wenn zu diesem Zeitpunkt der freie Platz im Puffer einen voreingestellten Wert unterschreitet oder die Zugriffsqualität zu schlecht ist.

Zurücksetzen der Tabellenpuffer

Über die Eingabe von $TAB im Kommandofeld können die Tabellenpuffer auf dem entsprechenden Applikationsserver zurückgesetzt werden. Dabei werden alle Daten im Puffer invalidiert.

Verwenden Sie dieses Kommando nur, wenn Inkonsistenzen im Puffer entstanden sind! Das Füllen der Puffer kann in großen Systemen mehrere Stunden dauern. Während dieser Zeit ist die Performance erheblich beeinträchtigt.

Siehe auch:

Synchronisation der lokalen Puffer

Welche Tabellen sollten gepuffert werden?

Wie sind die Tabellenpuffer technisch realisiert?

Welche Zugriffe gehen direkt auf die Datenbank

Wie kann man die Pufferqualität analysieren?