CDS Views Tipps und Tricks – Performance
CDS Views ist die Lösung von SAP hinsichtlich der Performance-Optimierung. SAP hat das System so weit ausgeklügelt, dass Entwickelnde eigentlich gar nichts mehr beachten müssen. Die CDS Views hätten eine so große Performance, dass Sie bei der Datenselektion keine Einschränkungen vornehmen müssten, da die darunter liegende HANA-Datenbank alles optimieren würde. Ob das wirklich stimmt, erläutere ich Ihnen anhand eines Beispiels.
Performance Beispiel: Businesspartner-Tabelle
Nehmen wir als Beispiel die Businesspartner-Tabelle BUT000. Zur Veranschaulichung ist sie mit einem Testdatensatz gefüllt (NAME_ORG1 = Testname 1, NAME_ORG2 = Testname 2, NAME_ORG3 = Testname 3). Anschließend wurde eine CDS View gebaut, die die Datensätze aus der BUT000 selektiert. Zusätzlich gibt es ein berechnetes Feld „Kompletter Name“, bei dem die drei Spalten verkettet und weitere String-Operationen ausgeführt werden.
Nun unterscheiden wir zwei verschiedene Select-Abfragen:
SELECT #1
select *
from Z_I_BUT000_0
where vorname = 'Testname 1'
and zweitname = 'Testname 2'
and nachname = 'Testname 3'
SELECT #2
select *
from Z_I_BUT000_0
where kompletter_name = 'Testname 1 Testname 2 Testname 3'
Gleiches Ergebnis, andere Laufzeit
Die Ergebnisse der beiden Abfragen sind identisch, jedoch sind die Laufzeiten signifikant unterschiedlich. Die Grundregel bei CDS Views ist, dass alle Filter-Funktionen (bspw. WHERE-Bedingung) erst nach der Berechnung der Funktionen durchgeführt werden – und das für jede Tabellenzeile. Das heißt konkret, dass die Ausführungszeit sich mit der Anzahl der Datensätze multipliziert. Bei sehr großen Datenmengen kann dies einen immensen Unterschied ausmachen. Deswegen beachten Sie die Regel Nummer 1: Filtern Sie zuerst die Datenmenge und wenden Sie dann die benötigten Funktionen an!
Die Regel Nummer 2 steht direkt im Zusammenhang mit der ersten Regel: Selektieren Sie immer nur so viele Felder, wie Sie wirklich benötigen. Meist ist es der schnellste und aus Entwicklersicht der einfachste Ansatz, bestehende CDS Views zu nutzen. Das ist auch so lange nicht verkehrt, wie erforderliche Daten von der Datenbank an den Application Server übertragen werden. Versuchen Sie, die Interface Views so allgemein und die Consumption Views so speziell wie möglich zu halten. Die Unterschiede zwischen den Viewarten sind in diesem Blog erklärt: Wie gestalte ich meine CDS-Architektur.
Wenn Sie das beachten und jede Consumption View auch wirklich nur für einen bestimmten Use Case bezogen ist, so holen Sie die optimale Performance aus Ihrer CDS-Architektur.
Fazit
Wie sind Ihre Erfahrungen in der Performance mit CDS Views? Welche Best Practices nutzen Sie in Ihrem Unternehmen? Ich freue mich auf Ihre Rückmeldungen! Falls Sie Interesse an einem tiefgründigen Wissen zu ABAP CDS Views haben, können Sie gerne an unserer Entwickler-Schulung zum Thema teilnehmen:
In diesem halbtägigen Online-Learning erhalten ABAP-Entwicklerinnen und -Entwickler eine Einführung in die Grundlagen von ABAP Core Data Services (CDS). Sie bekommen alle grundlegenden Informationen rund um das neue S/4HANA-Programmiermodell vermittelt und werden befähigt, selbst CDS Views zu erstellen.