oatawa - stock.adobe.com
Tipps und Tricks zur Verbesserung der Leistung von SAP HANA
Die Leistungsoptimierung gehört zu den zentralen Aufgaben von SAP-HANA-Entwicklern und -Administratoren. Welche Stellschrauben und Tools die In-Memory-Datenbank bietet.
Um die Leistung von SAP S/4HANA zu verbessern, spielt vor allem die Datenbank eine Rolle. Die Leistung von SAP HANA ist generell gut, da die In-Memory-Datenbank für das Zusammenspiel mit den Business-Anwendungen von SAP optimiert ist. Allerdings können Anwender und IT-Verantwortliche mit einigen Tools und Handgriffen die Performance optimieren.
Abfragen an HANA anpassen
Wenn die Leistung von Abfragen nicht optimal ist, sollten sich Modellierer mit den Abfragen auseinandersetzen. Häufig liegen Leistungsprobleme bei den Abfragen nicht an HANA, sondern an nicht optimal erstellten Abfragen, die nicht für die In-Memory-Datenbank angepasst sind.
Die Abfragen sollten nicht zu viele Daten lesen, die sie nicht benötigen. Außerdem sollten die In-Memory-Funktionen von HANA in die Abfragen eingebunden werden. Anstatt komplexe Abfragen zu erstellen, kann es sinnvoll sein, die Abfragen in kleinere, einfachere Abfragen aufzuteilen.
Aggregieren von Daten
Die Verdichtung von Daten ist beim Einsatz von HANA häufig nicht förderlich für die Leistung. HANA aggregiert seine Daten automatisch im Arbeitsspeicher. SAP empfiehlt möglichst den Einsatz eines einzelnen DataStore Object der Variante Standard. Das reicht für Berichte in den meisten Fällen aus. Nur wenn ein Objekt messbar nicht ausreicht, kann es sinnvoll sein, weitere zu erstellen. HANA bietet darüber hinaus die Möglichkeit von Open ODS Views. Diese ermöglichen eine virtuelle Aggregation von Daten.
Speichertypen bei Tabellen richtig setzen
Damit die Leistung des SAP-Systems optimal ist, ist es wichtig, dass die Datenbank optimal angepasst ist, und das System die richtigen Speichertypen für die Tabellen nutzen. SAP empfiehlt die Verwendung des zeilenbasierten Ansatzes (Row), wenn die Tabellen eher klein sind. Wenn ohnehin fast alle Spalten in Abfragen genutzt werden, macht es Sinn, die Row-Tabellen zu verwenden. Sollen Tabellen für das Reporting zum Einsatz kommen, sind spaltenbasierte Tabellen besser. Vor allem beim Aggregieren von Spalten kann das die Leistung deutlich verbessern.
Hier sollten Admins die Zugriffszeiten im Blick behalten und bei Bedarf die Delta-Merge-Jobs überprüfen. Teilweise kann die Leistung verbessert werden, wenn bei diesen Arten von Tabellen die Jobs häufiger laufen.
Grundsätzlich sollten so viele Aufgaben wie möglich direkt in der Datenbank ablaufen, da diese Daten wesentlich schneller verarbeiten kann als externe Systeme, welche die Daten erst auslesen müssen. Datenintensive Funktionen sollten aus dem Analytic Manager und dem Data-Warehousing-Management direkt in SAP HANA ablaufen. Aus diesem Grund ist es sinnvoll, nur die Spalten auszulesen, die für die Reports auch notwendig sind. Referentielle Joins können eine bessere Leistung bieten als Inner Joins.
Hoch aggregierte Daten nutzen und Indexe optimieren
Sollen große Datenmengen aggregiert und gelesen werden, ist es möglich, die Ergebnisse zu speichern. Vor allem, wenn ein Prozess eine große Menge an Daten erfordert, die zusätzlich noch schnell verarbeitet werden müssen, sollten Daten, die sich kaum ändern, in eigenen Tabellen gespeichert werden. Eine Aufteilung der Tabellen nach sinnvollen Maßgaben kann die Leistung von HANA deutlich optimieren. Die Aktualisierung der ausgelagerten Daten sollte regelmäßig stattfinden. Dadurch lässt sich die Tabellenverarbeitung deutlich entlasten.
Joins sind bei gespeicherten Spalten schneller als bei berechneten Daten. Zusätzlich kann HANA häufig verwendete Daten in einem Cache speichern, was beim erneuten Lesen die Leistung verbessert.
Teilweise macht es Sinn, in diesem Zusammenhang einen Index für verschiedene Spalten zu führen. Ob das die Leistung verbessert, hängt vom jeweiligen System ab. Es ist aber in jedem Fall einen Versuch wert, die Einstellung zu testen. Allerdings sollte bei nicht eindeutigen Spalten kein Index gesetzt werden. Indexe erzeugen Overhead. Daher sollte nur dann Indexe zum Einsatz kommen, wenn es erforderlich ist. Ist ein Index notwendig, dann sollten nur die Spalten integriert werden, die notwendig sind.
Tabellen partitionieren
Die Aufteilung von Tabellen ermöglicht das parallele Lesen. Dadurch steigt die Leistung entsprechend an. Was bei großen Tabellen sinnvoll ist, kann auch bei kleineren und mittleren Tabellen genutzt werden. Die Partitionierung von Tabellen erfolgt mit Kriterien, die sich auch beim Filtern nutzen lassen. Range-, Hash- und Round-Robin-Partitionen ermöglichen das Steuern der Daten, die HANA im Arbeitsspeicher halten soll.
Grundsätzlich ist es darüber hinaus empfehlenswert, lokale, temporäre Tabellen durch Tabellenvariablen zu ersetzen. Außerdem sollten Tabellen entladen werden, wenn man diese nicht mehr benötigt. Das ist bei großen Tabellen besonders sinnvoll, da diese im Arbeitsspeicher den meisten Platz belegen. Zusammen mit der Partitionierung lässt sich die Leistung durch eine optimale Vorgehensweise verbessern.
SAP Smart Data Access sparsam einsetzen
Die Verwendung von Smart Data Access (SDA) sollte beim Einsatz von HANA gut geplant werden, da dadurch der Speicherverbrauch deutlich ansteigt. SDA ist ein Virtualisierungs-Feature, dass den Zugriff auf externe Daten wie Hadoop ermöglicht. Die Daten kann das System anschließend im Hauptspeicher aggregieren. Das bietet Vorteile, kann aber auch Probleme bei der Leistung verursachen. Die Funktion sollte nur dann zum Einsatz kommen, wenn sich dadurch die Leistung messbar steigert. In vielen Fällen ist die Nutzung allerdings nicht sinnvoll.
SQL Optimizer und Performance Guide for Developers
Bauen Abfragen auf SQL auf, kann der Einsatz des SAP HANA SQL Optimizer sinnvoll sein. Die wichtigsten Aufgaben des SQL Optimizer sind die regelbasierte und die kostenbasierte Optimierung von Abfragen aus SAP HANA.
Die regelbasierte Optimierung kann die Abfrage komplett ändern, Operatoren oder Informationen anpassen und hinzufügen. Der Optimierer nutzt dazu fest hinterlegte Regeln, die eine nachgewiesene Verbesserung der Leistung bewirken. Findet SAP HANA SQL Optimizer Verbesserungen in Abfragen, sind diese in den meisten Fällen nach der Optimierung schneller. Mehr zur Verwendung findet man im SAP HANA Performance Guide for Developers.