
Im partiellen Tabellenpuffer TABLP werden einzelne Sätze von satzweise gepufferten Tabellen verwaltet.
Technische Realisierung und Pufferzugriff
Der partielle Tabellenpuffer besteht aus einer zentralen Verwaltungsstruktur, einem Tabellenverzeichnis und dem Datenbereich. Der Datenbereich ist in Rahmen fester Größe (frames) organisiert (standardmäßig 4 KB).
Die Tabellennamen werden im Verzeichnis alphabetisch sortiert. Die Tabelleneinträge liegen, ebenfalls sortiert, in den zugehörigen Rahmen des Datenbereichs.
Bei einem Pufferzugriff wird durch binäre Suche zunächst der Eintrag im Tabellenverzeichnis, anschließend der betreffende Rahmen und schließlich der gesuchte Satz innerhalb des Rahmens ermittelt.
Wenn neue Daten unter Beibehaltung der Sortierreihenfolge eingefügt werden, können Rahmen im Datenbereich überlaufen. Solche überlaufenden Rahmen müssen geteilt und ihre Verwaltungsstruktur muss aktualisiert werden. Hieraus erklärt sich auch, dass der partielle Tabellenpuffer etwas weniger effizient als der generische/vollständige Tabellenpuffer arbeitet. Im partiellen Tabellenpuffer müssen die Datensätze nach und nach unter Reorganisation der Rahmenstruktur eingebaut werden. Im generischen/vollständigen Puffer werden alle Daten einer Tabelle in einem Schritt - von der Datenbank bereits sortiert - eingelagert.
Verwaltung nicht vorhandener Sätze
Der partielle Puffer speichert auch Informationen über nicht vorhandene Sätze einer Tabelle. Wenn Sie versuchen, mit einem Schlüssel auf die Tabelle zuzugreifen, der nicht in der Datenbank vorhanden ist, so wird diese Information im Puffer gespeichert.
Dies geschieht über ein Flag, das an jeden gespeicherten Satz im Puffer angehängt ist. Das Flag zeigt an, ob dieser Satz in der Tabelle existiert oder nicht. Wenn Sie versuchen, auf einen nicht vorhandenen Satz zuzugreiffen, wird ein leerer Satz mit dem entsprechenden Schlüssel im Puffer abgespeichert, und das Flag wird auf den Wert für Nichtexistenz gesetzt. Wenn Sie erneut versuchen, auf diesen Satz zuzugreifen, so kann direkt im Puffer festgestellt werden, dass dieser Satz nicht auf der Datenbank existiert.
Satzweise Pufferung ist empfehlenswert, wenn Sie wiederholt versuchen, auf nicht existente Sätze einer Tabelle zuzugreifen
Verdrängung
Wenn Sätze einer partiell gepufferten Tabelle gelesen und im Puffer gespeichert werden sollen, kann es aus Platzgründen unter Umständen notwendig sein, andere Sätze aus dem Puffer zu entfernen. Es werden diejenigen Sätze der Tabelle aus dem Puffer entfernt, auf die am längsten nicht mehr zugegriffen wurde.
Globale Synchronisation
Die Modifikationen in den lokalen Puffern müssen in verteilten Systemen synchronisiert werden, um die gepufferten Daten konsistent zu halten. Informationen zum allgemeinen Vorgehen bei der Synchronisation finden Sie unter Synchronisation lokaler Puffer.
Im folgenden werden die Auswirkungen verschiedener ABAP-Befehle auf die lokale und globale Synchronisation des partiellen Puffers beschrieben.
Veränderungen mit WHERE-Bedingung belasten die Puffer-Verwaltung erheblich mehr als solche ohne WHERE-Bedingung.