Im Gegensatz zu Applikationsservern und die Präsentationsservern ist der Datenbankserver eine nur einmal im System vorhandene Ressource. Daher sollte man versuchen, möglichst viel Last von der Datenbank zu nehmen. Folgende Mittel stehen dafür zur Verfügung:
Tabellen auf dem Applikationsserver puffern
Durch die Pufferung von Daten im Tabellenpuffer des Applikationsservers kann die Zugriffszeit auf Daten erheblich reduziert werden. Einen Einzelsatz aus der Tabelle T001 von der Datenbank zu lesen kann zwischen 8 - 600 Millisekunden dauern, während der Zugriff aus dem Tabellenpuffer in einer Zeitspanne zwischen 0.2 - 1 Millisekunden erfolgt.
Ob eine Tabelle gepuffert wird oder nicht, ist in den technischen Einstellungen der Tabelle im ABAP Dictionary definiert. Es gibt drei Pufferungsarten:
Bei einem lesenden Zugriff auf gepufferte Tabellen geschieht folgendes:
Bei einem ändernden Zugriff auf eine Datenbanktabelle geschieht folgendes:
Folgende Tabellen sollten gepuffert werden:
Wenn eine Tabelle gepuffert wird, sollte darauf geachtet werden, keine Open SQL-Anweisungen zu verwenden, welche die Pufferung umgehen.
Folgende SELECT-Anweisungen umgehen die Pufferung:
Weiterhin umgehen alle NATIVE SQL-Anweisungen die Pufferung.
Wiederholtes Lesen von Daten vermeiden
Die Vermeidung von wiederholtem Lesen der gleichen Daten hält nicht nur die Anzahl der Zugriffe klein, sondern nimmt auch Last von der Datenbank. Weiterhin wird auf Datenbanktabellen mit Ausnahme von Oracle ein 'Dirty Read' durchgeführt. Dadurch kann es vorkommen, daß bei einem zweiten Lesezugriff andere Daten gelesen werden, als beim ersten Lesezugriff. Um konsistente Daten im Programm zu haben, sollte nur einmal gelesen und die Daten in einer internen Tabelle zwischengespeichert werden.
Daten im ABAP-Programm sortieren
Der die ORDER BY-Klausel der SELECT-Anweisung wird vom Datenbanksystem nicht notwendigerweise optimal mit dem richtigen Index ausgeführt und führt daher oft zu hohen Laufzeitkosten. Nur wenn die Sortierung der Datenbank auch den zum Lesen verwendeten Index benutzt, sollte ORDER BY eingesetzt werden. Den verwendeten Index findet man mit dem Werkzeug SQL Trace des Performance Trace in der ABAP Workbench. Ansonsten ist es günstiger, die Datenbanktabelle in eine interne Tabelle oder einen Extrakt zu laden und diese im ABAP-Programm mit der Anweisung SORT zu sortieren.
Logische Datenbanken einsetzen
SAP liefert für alle Anwendungen
logische Datenbanken aus. Dies sind ABAP-Programme, welche die Open SQL-Anweisungen von den Anwendungsprogrammen entkoppeln. Logischen Datenbanken sind für performante Datenbankzugriffe optimiert. Wichtig ist es aber, auch die richtige logische Datenbank einzusetzen. Die Struktur oder Teile Struktur der logischen Datenbank sollte die Hierarchie der zu lesenden Daten wiedergeben. Ansonsten können auch negative Effekte für die Performance auftreten. Wenn beispielsweise nur die Daten einer Tabelle gelesen werden sollen, die in der Hierarchie der logischen Datenbank weit liegen, sollte besser direkt mit der SELECT-Anweisung gelesen werden, da die logische Datenbank zumindest auch die Schlüsselfelder aller ihrer darüberliegenden Knoten liest.