SAP HANA Performanceoptimierung
Am Begriff HANA Performanceoptimierung kommt keiner vorbei, der bereits mit HANA arbeitet oder plant auf HANA zu gehen. Was HANA Performanceoptimierung für Ihr Unternehmen bedeutet und welche Techniken sich hinter dem Begriff verbergen, werden in diesem Blogbeitrag geklärt.
Schlagwörter die in Verbindung mit SAP HANA fallen sind:
- Massendatenverarbeitung in Echtzeit und
- Geschwindigkeitsboost in der Datenbereitstellung
Doch was passiert wenn Ihre Programme und Entwicklungen nicht HANA konform entwickelt sind und der versprochene Laufzeitgewinn nicht eintritt? Die Programme laufen genauso schnell wie vor der Migration oder sogar schlimmer, deutlich langsamer.
HANA Performanceoptimierung
An dieser Stelle kommt die HANA Performanceoptimierung zum Einsatz. Sie befasst sich mit der Ermittlung von Flaschenhälsen im Ablauf eines Programms. Das bedeutet, bestehende Programme die selbst nach der Migration noch langsam laufen werden analysiert. Es wird der Engpass gesucht, der den versprochenen Geschwindigkeitsboost mit SAP HANA verhindert. Dabei ist es wichtig, dass System- und Anwendungsoptimierung differenziert betrachtet werden.
Systemoptimierung
Die Systemoptimierung hat einen sehr technischen Fokus. Sie wird üblicherweise von Datenbankadministratoren durchgeführt, wenn mehrere Prozesse langsam laufen und das Problem nicht auf ein oder wenige Programme eingegrenzt werden kann. Es stehen dann die Systemeinstellungen und Hardwareressourcen auf dem Prüfstand.
Anwendungsoptimierung
Eigenentwicklungen werden als Custom Code bezeichnet. Anwendungsoptimierung bedeutet Custom Code zu analysieren und anhand der Performance zu bewerten. Sie durchläuft dabei einen iterativen Prozess von drei Phasen.
- Analyse
- Anpassung
- Vergleich
Als erstes wird in der Analysephase der Flaschenhals der Anwendung ermittelt. Anschließend wird der erkannte Flaschenhals durch definierte Fixes angepasst. Parallel oder nach der Anpassung werden die Ergebnisse verglichen. Dabei wird die Laufzeit zwischen dem optimierten Programm und den gemessenen Werten aus der Analysephase verglichen und aus den Ergebnissen weitere Anpassungen abgeleitet.
Bei diesem iterativen Prozess können die Tools:
- SQL Monitor
- Code Inspector
- STAD (SAP Workload: Business Transaction Analysis)
- SAT (Laufzeitanalyse)
- ST05 (Performance Trace auf SQL-Abfragen)
zum Einsatz kommen. Mit diesen Tools ist der Entwickler in der Lage, SQL-Abfragen beispielsweise auf ihre Laufzeit und Anzahl der Aufrufe zu überprüfen. Anhand der Ergebnisse kann die exakte Position ermittelt werden, an der eine mögliche Codeoptimierung vorgenommen werden sollte.
Codeoptimierung
Die Optimierung dieser gefunden Schnipsel orientieren sich dabei an definierten “Golden Rules”. Diese Regeln bestehen bereits seit der normalen ABAP Entwicklung ohne HANA Bezug. Fünf definierte Regeln um HANA Ready zu entwickeln sind:
- Halte das ResultSet aus der Abfrage so klein wie möglich
- Minimiere die Menge der transferierten Daten
- Kein SELECT *, sondern nutze eine definierte Feldliste
- Verwendung von Aggregatfunktionen zum Einschränken der versendeten Daten
- Minimiere die Anzahl von Aufrufen die Daten transferieren
- Arrays sind bei spaltenbasierter Architektur effizienter. Geschachtelte SELECTs sind ineffizient, daher Daten durch JOINS verknüpfen
- Verwendung von Secondary Indizes geben keinen Geschwindigkeitsboost
- Verwende Code Pushdown um Daten von der Applikationsschicht in der Datenbank berechnen zu lassen
Code Pushdown
Der Code Pushdown wird dazu verwendet um komplexe Kalkulationen auf der Datenbankebene durchzuführen und ist ein Hauptpunkt der HANA Performanceoptimierung. Programme die auf ABAP basieren arbeiten standardmäßig nach dem Data-to-Code Paradigma. Anwendungen die entweder für SAP HANA entwickelt oder dahingehend optimiert wurden, basieren auf dem Code-to-Data Paradigma.
Der Hauptunterschied ist, dass das Data-to-Code Paradigma die Kalkulation von Daten auf der Applikationsschicht vornimmt, während das Code-to-Data Paradigma die Berechnung in der Datenbankschicht durchführt. Durch das Ausführen von Berechnungen auf der Datenbankschicht können Flaschenhälse vermieden werden. Diese treten vor allem auf, wenn eine große Menge an Daten zuerst in die Applikationsschicht transportiert und dort berechnet werden müssen.
Der Flaschenhals ist hierbei das Abfragen der benötigten Daten aus der Datenbank und der darauf folgende Transport in die Applikationsschicht, um Berechnungen anzustellen. Dieser Datentransport wird durch die Verwendung des Code Pushdowns um ein Vielfaches verringert, da ausschließlich die Ergebnisse der Kalkulation aus der Datenbank transportiert werden.
SELECT sal_curr_code, sal_number, sal_value,
FROM sales
INTO TABLE @lt_sal
Code Pushdown kann sowohl mit NativeSQL als auch OpenSQL entwickelt werden. Wir empfehlen OpenSQL zu nutzen. Der größte Vorteil gegenüber NativeSQL ist, dass ABAP Code in Kombination mit OpenSQL auf allen ABAP Applikationsservern fehlerfrei läuft, unabhängig der zugrunde liegenden Datenbank (Any DB).
Sie benötigen Beratung zum Thema Entwicklung mit HANA? Wir freuen uns von Ihnen zu hören.