Anfang des InhaltsbereichsÜbersichtsdokumentation Pufferung Dokument im Navigationsbaum lokalisieren

Das R/3-System sorgt dafür, daß der Datenaustausch zwischen dem R/3-System und dem Datenbanksystem möglichst performant erfolgt. Dies wird erreicht durch:

Bei der Analyse der Tracesätze ist der Pufferungsmechanismus entsprechend zu berücksichtigen.

Pufferung von Tabellen

Da Tabellen teilweise oder vollständig gepuffert sein können (siehe auch Strukturlink Datenbanktabellen puffern.), führt ein OPEN-SQL-Befehl nur dann zu einem Datenbankzugriff, wenn dieser SQL-Befehl nicht über den Tabellenpuffer realisiert werden kann. Es entspricht also nicht jedem OPEN-SQL-Befehl ein Befehl oder eine Befehlsfolge im SQL-Trace. Jeder SQL-Befehl andererseits, den Sie im Tracefile vorfinden, wurde auch tatsächlich an die Datenbank gesendet und dort ausgeführt.

Pufferung von Datenbankanforderungen

Um die Anzahl der relativ laufzeitintensiven PREPARE-Aufrufe so klein wie möglich zu halten, hält jeder Work-Prozeß eines Anwendungsservers eine bestimmte Anzahl von bereits übersetzten SQL-Anweisungen in einem eigens dafür vorgesehenen Puffer (Standard ist 250 Anweisungen).

Soll nun eine bestimmte OPEN SQL-Anweisung ausgeführt werden, wird zunächst geprüft, ob sich diese Anweisung bereits im "Statement-Cache" befindet. Ist dies der Fall, wird die Anweisung unmittelbar ausgeführt, d.h. es wird ein REOPEN (SELECT) bzw. ein REEXEC (INSERT, UPDATE, DELETE) abgesetzt.

Befindet sich die Anweisung nicht im Puffer, muß dies zunächst durch eine entsprechende PREPARE-Operation für das anschließende OPEN/EXEC vorbereitet werden. Der Puffer wird nach einem LRU-Algorithmus ("least recently used") verwaltet, d.h. bei Bedarf werden diejenigen Anweisungen aus dem Puffer verdrängt, die am seltesten ausgeführt werden. Häufig benutzte Anweisungen müssen somit in der Regel nur einmal vorbereitet werden.

Ein Anwendungsserver puffert die Anweisungen DECLARE, PREPARE, OPEN und EXEC im Cursor-Cache eines Work-Prozesses. Sobald das System einmal einen Cursor für eine DECLARE-Anweisung geöffnet hat, kann es also diesen Cursor im selben Work-Prozeß immer wieder verwenden.

Ende des Inhaltsbereichs