Partieller Tabellenpuffer
Im partiellen Tabellenpuffer TABLP werden einzelne Sätze von satzweise gepufferten Tabellen verwaltet.
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.
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
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.
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.
● Wenn Sie Veränderungen mit WHERE-Bedingungen durchführen (UPDATE dbtab WHERE ..., DELETE FROM dbtab WHERE ...), so wird zum Synchronisationszeitpunkt die gesamte Tabelle sowohl im Puffer des lokalen Servers (Server, auf dem der Befehl abgesetzt wurde) als auch auf allen anderen Servern invalidiert.
● Bei Veränderungen ohne WHERE-Bedingungen (UPDATE dbtab, INSERT dbtab, DELETE dbtab) werden zum Synchronisationszeitpunkt die betroffenen Sätze im Puffer des lokalen Servers geändert und in den Puffern aller anderen Server gelöscht.

Veränderungen mit WHERE-Bedingung belasten die Puffer-Verwaltung erheblich mehr als solche ohne WHERE-Bedingung.