Performance-Tuning
Siehe Schlüsselbefehl Select.
Performance-Tuning ist ein Thema in jedem Projekt und jeder Firma. Kein Anwender möchte lange vor dem Bildschirm sitzen und die Sanduhr sehen. Es ist verschenkte Arbeitszeit und nervt die Anwender, wenn sie zu lange warten müssen.
Für die Performance einer SAP-Anwendung gibt es drei wesentliche Faktoren:
- Die Hardwareausstattung
- Die Basiseinstellungen des Systems
- Der Aufbau der SAP-Programme
Dieses Wiki konzentriert sich auf v. a. auf die Anpassungen der SAP-Programme und worauf bei der Programmerstellung hinsichtlich Performance zu achten ist. Es gibt eine Reihe von Faktoren, die bei der programmseitigen Performanceverbesserung zu beachten sind.
Hardwareausstattung
Die Hardwareausstattung ist das Gebiet, wo mit genügend Geld am einfachsten Performanceverbesserungen erreicht werden. Investitionen im Hardwarebereich bringen Leistungsverbesserungen und es besteht nicht die Gefahr, dass durch Programmanpassungen die Funktionalität der Programme negativ verändert wird. Neue Hardware ist jedoch teuer.
- Datenbank (Anzahl und Leistungsfähigkeit CPUs, sowie Speicher)
- Applikationsserver (Anzahl und Leistungsfähigkeit)
- PCs (CPU, RAM, Festplatte)
Programmanpassungen
Datenbank-Operationen
- Select-Statements
- Where-Bedingungen explizit angeben
- Select-Single
- Select * vermeiden
- Select into itab
- Aggregierungsfunktionen
- Pufferung einer Tabelle
- Kombination Read itab und Select dbtbl
- Inner-Join/Select-Endselect/View
- Collect
- Dynamische Programmierung
- Array Datenbankänderungen
Lesen interner Tabellen
- Loop at itab assigning fieldsymbol
- Sort itab. Read table with key field1 = 'Wert1" field2 = 'Wert2' binary search
- Loop itab where .. from i to j
- modify itab from wa TRANSPORTING field1 field2
- Nutzung Hilfstabellen als Sekundärindex
- Hashed Tabellen und Sorted Tabellen
- read table ITAB .. transporting no fields
Variablen
- Selektionsfelder obligatorisch
- Importparameter in Form-Routine typisieren
- Datentyp passend
- konkret typisieren und nicht "type any"
- Überflüssige Variablen löschen
Performancemessung im Programm
Performance und HANA
- HANA wird als Datenbank meist anderen Datenbanken überlegen sein, weil die Daten auch im Memory/Arbeitsspeicher gespeächert werden.
- Bei HANA werden die Daten einer Datenbanktabellen in aller Regel spaltenorientiert abgespeichert. Wenn man nach dem Namen eines Kunden in der Tabelle KNA1 sucht, dann wird man vor HANA sehr häufig für das Namensfeld KNA1-NAME1 einen Index anlegen, damit die Suche nach diesem Feld schneller läuft. Unter HANA sind Indizes/Sekundärindizes nicht mehr nötig und können gelöscht werden. Die Daten werden automatisch auch sortiert nach der Spalte NAME1 abgelegt und kann die Suche nach Nicht-Primärfeldern genauso schnell sein wie die Suche über einen voll qualifizierten Primärschlüssel.
- Unter HANA wird man so viel wie möglich der Datenselektion-/Verarbeitung auf die Datenbank verlagern und eine möglichst geringe Datenmenge nach einem Select in eine interne Tabelle/Struktur, bzw. auf den Applikationsserver transportieren.
Debugging
- Der erste Herangehensweise bei einem Performanceproblem ist, das Programm zu debuggen und dabei zu beobachten welche Statements viel Zeit zur Ausführung benötigen. So erkennt man häufig sehr schnell kritische Stellen, wo es sich lohnt, sich eingehende Gedanken über Performanceverbesserungen zu machen.
Tools
SE30 (ABAP Laufzeitanalyse und Performancetipps)
ST05 (Performance Trace)
SLIN (Erweiterte Syntaxprüfung)
Siehe Performance-Tuning.
SAP-Schulungskurs BC490
SE80 Performance-Beispiele
Literatur
- Performanceoptimierung von ABAP®-Programmen, von Siegfried Boes
- ABAP-Performance-Workshop, von Frank Wolf
- SAP Performance Optimization Guide: Analyzing and Tuning SAP Systems, von Thomas Schneider
- ABAP Performance Tuning, von Hermann Gahm