Anfang des Inhaltsbereichs

Hintergrunddokumentation Generische Pufferung  Dokument im Navigationsbaum lokalisieren

Bei generischer Pufferung werden beim Zugriff auf einen Satz der Tabelle alle mit diesem Satz in den generischen Schlüsselfeldern übereinstimmenden Sätze in den Puffer geladen. Der generische Schlüssel ist ein linksbündiger Teil des Primärschlüssels der Tabelle.

Beispiel

In diesem Beispiel wird der rot unterlegte Satz aus der Tabelle SCOUNTER von einem Programm gelesen. Falls die Tabelle generisch gepuffert ist, werden dabei alle mit dem gelesenen Satz in den generischen Schlüsselfeldern (MANDT und CARRID) übereinstimmenden Sätze in den Puffer geladen.

Diese Grafik wird im zugehörigen Text erklärt

Wann ist generische Pufferung sinnvoll?

Eine Tabelle sollte generisch gepuffert werden, wenn für die Verarbeitung in der Regel nur bestimmte generische Bereiche der Tabelle benötigt werden.

Mandantenabhängige, vollständig gepufferte Tabellen werden automatisch generisch gepuffert, da auf einem Applikationsserver in der Regel nicht in allen Mandanten gleichzeitig gearbeitet wird. Das Mandantenfeld ist der generische Schlüssel.

Sprachabhängige Tabellen sind ein weiteres Beispiel für den sinnvollen Einsatz generischer Pufferung. In der Regel werden auf einem Applikationsserver nur Sätze einer Sprache benötigt. Der generische Schlüssel umfaßt in diesem Fall alle Schlüsselfelder bis einschließlich des Sprachfeldes.

Wie sollte der generische Schlüssel gewählt werden?

Bei generischer Pufferung ist die geeignete Wahl des generischen Schlüssels von entscheidender Bedeutung.

Wird der generische Schlüssel zu klein gewählt, so werden sehr wenige große Bereiche im Puffer gehalten. Bei einem Zugriff werden dann eventuell zu viele Daten in den Puffer geladen.

Wird der generische Schlüssel zu groß gewählt, entstehen möglicherweise zu viele kleine generische Bereiche im Puffer. Diese können die Pufferverwaltung belasten, da dort für jeden gepufferten generischen Bereich ein Eintrag verwaltet wird. Weiterhin besteht die Gefahr, daß viele Zugriffe am Puffer vorbei direkt auf die Datenbank gehen, da sie den generischen Schlüssel der Tabelle nicht voll angeben.Gibt es pro generischem Bereich nur einige wenige Sätze, so ist es in der Regel günstiger, die Tabelle vollständig zu puffern.

Der generische Schlüssel wird nur bis 64 Bytes unterschieden. Die Angabe eines längeren generischen Schlüssels ist möglich, die über den Wert von 64 Bytes hinausgehenden Teile werden aber zur Bildung der generischen Bereiche nicht herangezogen.

Zugriff auf die gepufferten Daten

Generisches Puffern einer Tabelle ist nur dann sinnvoll, wenn auf die Tabelle mit voll spezifizierten generischen Schlüsselfeldern zugegriffen wird. Ist bei einem SELECT-Statement ein Feld des generischen Schlüssels nicht mit einem Wert versorgt, so wird am Puffer vorbei direkt von der Datenbank gelesen!

Wird mit voll spezifiziertem generischen Schlüssel auf einen nicht im Puffer enthaltenen generischen Bereich zugegriffen, erfolgt ein Datenbankzugriff, um den Bereich zu laden. Wenn die Tabelle keine Sätze im angegebenen Bereich enthält ("No Record Found"), wird dieser Bereich im Puffer als nicht existent vorgemerkt. So kann bei einem späteren Zugriffsversuch auf diesen Bereich ein erneuter Datenbankzugriff vermieden werden.