Die Performance von ABAP-Anwendungsprogrammen wird im wesentlichen von Datenbank-Zugriffen bestimmt. Es lohnt sich daher die SQL-Anweisungen einer genaueren Analyse zu unterziehen. Behilflich dabei sind die Werkzeuge Performance Trace und Laufzeitanalyse der ABAP Workbench im Menu Test. Insbesondere zeigt der SQL Trace im Performance Trace, wo welche Teile von Open SQL-Anweisungen in welcher Zeit verarbeitet werden.
Um den Einfluß von SQL-Anweisungen auf die Laufzeit von ABAP-Programmen zu verstehen, muß die zugrundeliegende Architektur betrachtet werden. Die
Workprozesse eines Applikationsservers sind für die gesamte Laufzeit des R/3-Systems als Benutzer (Clients) an das Datenbanksystem (Server) angemeldet. Die Verbindung zwischen Client und Daten bildet das Datenbank-Management-System (DBMS).DBMS-Architektur
Der Aufbau eines DBMS ist im allgemeinen:
In dieser Architektur sind vier Punkte für Performance-Betrachtungen wichtig:
Das Lesen und Schreiben auf Datenbank Files stellt den größten Engpaß dar. Ein gut konfiguriertes System wird ausschließlich von der I/O- Zugriffsgeschwindigkeit bestimmt.
Bei Symmetrischen Multi-Prozessoren ist dies nicht von Belang.
Unkritisch für kleinere Datenvolumen, aber ein Engpaß, wenn große Datenmengen transferiert werden sollen.
Der Optimizer
Jedes Datenbanksystem verfügt über einen Optimizer. Die Aufgabe des Optimizers ist es, den Ausführungsplan für ein SQL-Statement zu erstellen (z.B. festlegen, ob ein Index- oder Table Scan durchgeführt wird). Es gibt zwei Ausprägungen von Optimizern:
Rule-based
Ein Rule-Based Optimizer analysiert die Struktur einer SQL-Anweisung (hauptsächlich SELECT und die WHERE-Klausel ohne Werte) und den Index der Tabelle(n). Über einen Bewertungsmechanismus entscheidet der Optimizer welches Vorgehen er anwendet, um den Befehl auszuführen.
Cost-based
Ein Cost-Based Optimizer betrachtet zusätzlich einige Werte in der WHERE-Klausel und die Statistiken der Tabellen. Die Statistiken enthalten Low- und High Values der Felder oder sogar ein Histogramm, das die Verteilung der Daten in der Tabelle enthält. Der Cost-Based Optimizer nutzt mehr Informationen über die Tabellen und führt daher meistens zu einem schnelleren Zugriff. Ein Nachteil beim Cost-Based Optimizer ist, daß die Statistiken periodisch auf den neuesten Stand gebracht werden müssen.
Verwendung
ORACLE setzt bis Rel 7.1 den Rule-based Optimizer ein. Ab Rel. 7.2 den Cost-based Optimizer (R/3 Release 4.0A). Alle anderen Datenbanksysteme haben einen Cost-based Optimizer.
Regeln für die performante Open SQl-Programmierung
Mit Blick auf oben dargestellte Architektur, ergeben sich fünf Regeln, die möglichst unabhängig vom verwendeten Datenbanksystem zu einer performanten Ausrührung von ABAP-Programmen mit Datenbankzugriffen führen. Die folgenden Regeln gelten insbesondere für folgende Datenbanksysteme:
Für folgende Datenbanksysteme treffen sie nicht oder nur teilweise zu:
Die folgenden Abschnitte erläutern die fünf Regeln.
Treffermenge klein halten Übertragene Datenmenge klein halten Zahl der Zugriffe klein halten Suchaufwand klein halten Datenbanklast klein halten