Skip to content
NextLytics
Megamenü_2023_Über-uns

Shaping Business Intelligence

Ob clevere Zusatzprodukte für SAP BI, Entwicklung aussagekräftiger Dashboards oder Implementierung KI-basierter Anwendungen - wir gestalten zusammen mit Ihnen die Zukunft von Business Intelligence. 

Megamenü_2023_Über-uns_1

Über uns

Als Partner mit tiefem Prozess-Know-how, Wissen der neuesten SAP-Technologien sowie hoher sozialer Kompetenz und langjähriger Projekterfahrung gestalten wir die Zukunft von Business Intelligence auch in Ihrem Unternehmen.

Megamenü_2023_Methodik

Unsere Methodik

Die Mischung aus klassischem Wasserfallmodell und agiler Methodik garantiert unseren Projekten eine hohe Effizienz und Zufriedenheit auf beiden Seiten. Erfahren Sie mehr über unsere Vorgehensweise.

Produkte
Megamenü_2023_NextTables

NextTables

Daten in SAP BW out of the Box bearbeiten: Mit NextTables wird das Editieren von Tabellen einfacher, schneller und intuitiver, egal ob Sie SAP BW on HANA, SAP S/4HANA oder SAP BW 4/HANA nutzen.

Megamenü_2023_Connector

NextLytics Connectoren

Die zunehmende Automatisierung von Prozessen erfordert die Konnektivität von IT-Systemen. Die NextLytics Connectoren ermöglichen eine Verbindung Ihres SAP Ökosystems mit diversen open-source Technologien.

IT-Services
Megamenü_2023_Data-Science

Data Science & Engineering

Bereit für die Zukunft? Als starker Partner stehen wir Ihnen bei der Konzeption, Umsetzung und Optimierung Ihrer KI-Anwendung zur Seite.

Megamenü_2023_Planning

SAP Planning

Wir gestalten neue Planungsanwendungen mithilfe von SAP BPC Embedded, IP oder  SAC Planning, die einen Mehrwert für Ihr Unternehmen schaffen.

Megamenü_2023_Dashboarding

Dashboarding

Mit unserer Expertise verhelfen wir Ihnen auf Basis von Tableau, Power BI, SAP Analytics Cloud oder SAP Lumira zu aussagekräftigen Dashboards. 

Megamenü_2023_Data-Warehouse-1

SAP Data Warehouse

Planen Sie eine Migration auf SAP HANA? Wir zeigen Ihnen, welche Herausforderungen zu beachten sind und welche Vorteile eine Migration bringt.

Business Analytics
Megamenü_2023_Procurement

Procurement Analytics

Transparente und valide Zahlen sind vor allem in Unternehmen mit dezentraler Struktur wichtig. SAP Procurement Analytics ermöglicht die Auswertung von SAP ERP-Daten in SAP BI.

Megamenü_2023_Reporting

SAP HR Reporting & Analytics

Mit unserem Standardmodell für Reporting von SAP HCM mit SAP BW beschleunigen Sie administrative Tätigkeiten und stellen Daten aus verschiedenen Systemen zentral und valide zur Verfügung.

Megamenü_2023_Dataquality

Data Quality Management

In Zeiten von Big Data und IoT kommt der Vorhaltung einer hohen Datenqualität eine enorm wichtige Bedeutung zu. Mit unserer Lösung für Datenqualitätsmanagement (DQM) behalten Sie stets den Überblick.

Karriere
Megamenü_2023_Karriere-2b

Arbeiten bei NextLytics

Wenn Du mit Freude zur Arbeit gehen möchtest und dabei Deine berufliche und persönliche Weiterentwicklung nicht zu kurz kommen soll, dann bist Du bei uns genau richtig! 

Megamenü_2023_Karriere-1

Berufserfahrene

Zeit für etwas Neues? Gehe Deinen nächsten beruflichen Schritt und gestalte Innovation und Wachstum in einem spannenden Umfeld zusammen mit uns!

Megamenü_2023_Karriere-5

Berufseinsteigende

Schluss mit grauer Theorie - Zeit, die farbenfrohe Praxis kennenzulernen! Gestalte bei uns Deinen Einstieg ins Berufsleben mit lehrreichen Projekten und Freude an der Arbeit.

Megamenü_2023_Karriere-4-1

Studierende

Du möchtest nicht bloß die Theorie studieren, sondern Dich gleichzeitig auch praktisch von ihr überzeugen? Teste mit uns Theorie und Praxis und erlebe wo sich Unterschiede zeigen.

Megamenü_2023_Karriere-3

Offene Stellen

Hier findest Du alle offenen Stellenangebote. Schau Dich um und bewirb Dich - wir freuen uns! Falls keine passende Stelle dabei ist, sende uns gerne Deine Initiativbewerbung zu.

Blog
NextLytics Newsletter Teaser
Hier für unseren monatlichen Newsletter anmelden!
Newsletter abonnieren
 

Performance Analyse und Optimierung von SAP SQL

Es existieren verschiedene Möglichkeiten zur Analyse der SQLScript Performance. In diesem Artikel lernen Sie die relevanten Werkzeuge kennen. Wir zeigen Ihnen, wie Sie die Laufzeit von Ihren SQL Abfragen messen können, was als erstes Indiz für die Performance dienen kann. Anschließend erläutern wir, wie Sie mithilfe des Ausführungsplans herausfinden, welcher Teil des Codes am längsten braucht.

Mit dem PlanViz Tool können Sie sich den Ausführungsplan auch grafisch anschauen und einzelne Schritte analysieren. Diese Möglichkeit besteht sowohl bei Eclipse bzw. HANA Studio als auch in den web-basierten Frontends wie SAP Business Application Studio. Schließlich zeigen wir Ihnen, wie Sie mit dem SQLScript Code Analyzer Ihre Prozeduren und Funktionen scannen und Verbesserungsvorschläge generieren können.

Unsere Blogreihe "SQLScript Performance Analyse" im Überblick

  1. Performance Analyse und Optimierung von SAP SQL

  2. SQL Performance Analyse mit SAP PlanViz 

  3. Wie Sie die Performance Ihrer SQL Funktionen steigern 

 

Laufzeitmessung

Die Laufzeit einer SQL Abfrage kann als erster Anhaltspunkt für die Performance des Scripts verwendet werden. Vor allem wenn Sie zwei ähnliche Abfragen vergleichen, ist die Abfrage mit der niedrigeren Laufzeit die performantere.

Beachten Sie dabei, dass die Laufzeit eines SQLScripts auch von der allgemeinen Serverbelastung abhängt und daher schwanken kann. Um repräsentative Ergebnisse zu erhalten, sollten Sie daher den SQLScript mehrmals ausführen und anschließend die Messergebnisse vergleichen.

Betrachten wir das folgende Beispiel, welches wir in unserem Beitrag “So nutzen Sie Window Functions in SQLScript” vorgestellt haben. Als erstes führen wir die Abfrage mit der WHERE Klausel aus.

SELECT

    cost."ZDRCOSTLINEITEMID",

    ccgrp."ZDRCOSTCENTREGROUPTEXT",

    ccitem."ZDRCOSTCENTREITEMTEXT",

    cost."CURRENCY",

    cost."COST",

    cost."COSTBOOKINGDATE",

-- regular aggregations

    MAX("COST") OVER (PARTITION BY ccgrp."ZDRCOSTCENTREGROUPTEXT") as "MAX",

    ROUND(AVG("COST") OVER (PARTITION BY ccgrp."ZDRCOSTCENTREGROUPTEXT"), 0) as "AVG",

    COUNT(*) OVER (PARTITION BY ccgrp."ZDRCOSTCENTREGROUPTEXT") as "COUNT",

-- special functions

    LEAD(cost."COSTBOOKINGDATE", 1) OVER (PARTITION BY ccgrp."ZDRCOSTCENTREGROUPTEXT" ORDER BY ccitem."ZDRCOSTCENTREITEMTEXT", cost."COSTBOOKINGDATE") as "LEAD",

    DENSE_RANK() OVER (PARTITION BY ccgrp."ZDRCOSTCENTREGROUPTEXT" ORDER BY cost."COST" DESC) as "D_RANK",

    ROW_NUMBER() OVER (PARTITION BY ccitem."ZDRCOSTCENTREITEMTEXT" ORDER BY cost."COSTBOOKINGDATE") as "ROWNUM"    

FROM

    ZDRCOSTCENTREGROUP as ccgrp

    left join

    ZDRCOSTCENTREITEM as ccitem on ccgrp."ZDRCOSTCENTREGROUPID" = ccitem."ZDRCOSTCENTREGROUPID"

    left join

    ZDRCOSTLINEITEM as cost on ccitem."ZDRCOSTCENTREITEMID" = cost."ZDRCOSTCENTREITEMID"

WHERE

    ccgrp."ZDRCOSTCENTREGROUPTEXT" = 'Administration'

ORDER BY

    ccitem."ZDRCOSTCENTREITEMTEXT", cost."COSTBOOKINGDATE";

In der SQL Konsole werden die Laufzeit und die Anzahl der selektierten Zeilen ausgegeben.

001-laufzeitmessung-mit-where_SAP SQL

Nun führen wir dieselbe Abfrage ohne WHERE Klausel aus. Es werden also alle Daten selektiert. Anhand der SQL Konsole können wir sehen, dass die Laufzeit knapp das Doppelte beträgt. Wobei die Server-Verarbeitungszeit verzehnfacht wird. Es werden auch zehnmal so viele Zeilen selektiert.

002-laufzeitmessung-ohne-where-klausel_SAP SQL

Ausführungsplan generieren

Mit dem Befehl EXPLAIN PLAN können Sie einen Ausführungsplan Ihrer SQL Abfrage in tabellarischer Form generieren. Dabei wird eine Liste von Operatoren angezeigt, die von der Datenbank zum Ausführen der Abfrage verwendet werden, sowie ergänzende Informationen über diese. So können Sie herausfinden, welche Operatoren für die lange Laufzeit verantwortlich sind. Diese Information kann verwendet werden, um die Abfrage zu optimieren, indem Sie zum Beispiel die Laufzeit oder den Speicherverbrauch reduzieren.

003-explain-plan-for_SAP SQL

Der Ausführungsplan kann mit der folgenden Syntax generiert werden:

EXPLAIN PLAN [SET STATEMENT_NAME = *<statement_name>*] FOR SELECT *<subquery>*

Wenn Sie das Statement spezifizieren, wird das Ergebnis in der Tabelle explain_plan_table gespeichert.

EXPLAIN PLAN SET STATEMENT_NAME = 'MyStatement01' FOR

SELECT

    cost."ZDRCOSTLINEITEMID",

    ccgrp."ZDRCOSTCENTREGROUPTEXT",...

Dieses kann anschließend ausgelesen werden:

SELECT * FROM

explain_plan_table

WHERE

           statement_name = 'MyStatement01'

Alternativ kann der Ausführungsplan auch direkt bei der Ausführung erstellt werden, indem Sie den Parameter SET STATEMENT_NAME weglassen. Der Ausführungsplan wird im Result Fenster angezeigt. Sie können auch mehrere durch ein Semikolon getrennte Abfragen eingeben, um mehrere Ausführungspläne gleichzeitig zu generieren.

EXPLAIN PLAN FOR

SELECT

    cost."ZDRCOSTLINEITEMID",

    ccgrp."ZDRCOSTCENTREGROUPTEXT",

    ccitem."ZDRCOSTCENTREITEMTEXT",

    cost."CURRENCY",

    cost."COST",

    cost."COSTBOOKINGDATE",

-- regular aggregations

    MAX("COST") OVER (PARTITION BY ccgrp."ZDRCOSTCENTREGROUPTEXT") as "MAX",

    ROUND(AVG("COST") OVER (PARTITION BY ccgrp."ZDRCOSTCENTREGROUPTEXT"), 0) as "AVG",

    COUNT(*) OVER (PARTITION BY ccgrp."ZDRCOSTCENTREGROUPTEXT") as "COUNT",

-- special functions

    LEAD(cost."COSTBOOKINGDATE", 1) OVER (PARTITION BY ccgrp."ZDRCOSTCENTREGROUPTEXT" ORDER BY ccitem."ZDRCOSTCENTREITEMTEXT", cost."COSTBOOKINGDATE") as "LEAD",

    DENSE_RANK() OVER (PARTITION BY ccgrp."ZDRCOSTCENTREGROUPTEXT" ORDER BY cost."COST" DESC) as "D_RANK",

    ROW_NUMBER() OVER (PARTITION BY ccitem."ZDRCOSTCENTREITEMTEXT" ORDER BY cost."COSTBOOKINGDATE") as "ROWNUM"    

FROM

    ZDRCOSTCENTREGROUP as ccgrp

    left join

    ZDRCOSTCENTREITEM as ccitem on ccgrp."ZDRCOSTCENTREGROUPID" = ccitem."ZDRCOSTCENTREGROUPID"

    left join

    ZDRCOSTLINEITEM as cost on ccitem."ZDRCOSTCENTREITEMID" = cost."ZDRCOSTCENTREITEMID"

WHERE

    ccgrp."ZDRCOSTCENTREGROUPTEXT" = 'Administration'

ORDER BY

    ccitem."ZDRCOSTCENTREITEMTEXT", cost."COSTBOOKINGDATE";

 


Steigern Sie die Leistung Ihres BW mit SQLScript!
Hier geht es zum Whitepaper!

SAP SQLScript Whitepaper


Alternativ können Sie in Eclipse einen Rechtsklick auf dem Code ausführen und Explain Plan aus dem Menü auswählen.

004-explain-plan-rechtsklick_SAP SQL

Im SAP HANA Database Explorer finden Sie diese Option unter dem Analyze Dropdown-Menü.

005-explain-plan-hana-database-explorer_SAP SQL

PlanViz

Explain Plan liefert erste Ansätze zur Performance Analyse. Allerdings existiert meiner Meinung nach ein viel besseres Werkzeug, welches Explain Plan überflüssig macht - PlanViz. Im Gegensatz zu Explain Plan stellt PlanViz die Ausführungsschritte grafisch dar, was die Analyse erheblich erleichtert. Nach der anfänglichen Analyse der aggregierten Schritte können Sie tiefer in die Details abtauchen und sich die einzelnen Operatoren ansehen.

006-engine-change-result_SAP SQL

Dabei geht die tabellarische Darstellung nicht verloren. PlanViz bietet neben der grafischen Sicht fünf weitere tabellarische Ansichten. In diesen können Sie Details zu Timeline, Operatoren, Tabellen und Performance sowie Netzwerk einsehen.

207-operator-list_SAP SQL

Da es sich um ein wirklich mächtiges und umfangreiches Tool handelt, haben wir weiterführende Informationen in einem separaten Artikel zusammengefasst - SQL Performance Analyse mit SAP PlanViz.

SQLScript Code Analyzer

Während PlanViz für eine post factum Analyse hilfreich ist, dient SQLScript Code Analyzer dazu, Ihre SQL Funktionen und Prozeduren in Hinsicht auf mögliche Probleme in der Codequalität, Sicherheit und Performance zu untersuchen. Indem Sie einen sauberen Code sicherstellen, können Sie Performanceprobleme von vornherein verhindern.

SAP liefert dazu zwei Prozeduren aus, die den Quellcode Ihrer Funktionen und Prozeduren analysieren können: ANALYZE_SQLSCRIPT_OBJECTS sowie

ANALYZE_SQLSCRIPT_DEFINITION. Die Prozedur ANALYZE_SQLSCRIPT_OBJECTS dient dazu, bereits vorhandene Objekte zu analysieren. Alternativ kann ANALYZE_SQLSCRIPT_DEFINITION verwendet werden, um den Quellcode auf mögliche Verbesserungspotentiale zu untersuchen, bevor die Funktion bzw. Prozedur angelegt wurde.

Web Werkzeuge

Die zuvor beschriebenen Werkzeuge beziehen sich primär auf die Eclipse bzw. HANA Studio Umgebung. Allerdings können neben diesen auch web-basierte Werkzeuge zur Performance Analyse eingesetzt werden. So steht die Explain Plan Funktionalität auch im HANA Database Explorer zur Verfügung.

008-generate-sql-analyzer-plan-file_SAP SQL

Darüber hinaus können Sie über den Menüeintrag Generate SQL Analyzer Plan File die plv Dateien generieren. Diese werden unter “Database Diagnostic Files” abgelegt und können mit Eclipse in der PlanViz Perspektive geöffnet werden. Alternativ können Sie auch den integrierten SQL Analyzer dafür nutzen.

Dieses Werkzeug steht sowohl im Web IDE als auch im SAP Business Application Studio zur Verfügung. SQL Analyzer ähnelt dem zuvor vorgestellten PlanViz. Neben der grafischen Ansicht können Sie in den tabellarischen Sichten nähere Details zu Operatoren, zetlicher Abfolge sowie verwendeten Tabellen und Anzahl der Tabellenzugriffe erfahren.

009-hana-sql-analyzer_SAP SQL

Performance Analyse und Optimierung - Unser Fazit

Nun haben Sie einen Überblick über die verschiedenen Möglichkeiten der SQLScript Performance Analyse gewonnen. Im nächsten Artikel, SQL Performance Analyse mit SAP PlanViz, stellen wir PlanViz im Detail vor.

Haben Sie Fragen zu SAP HANA SQLScript? Versuchen Sie das nötige Know-How in Ihrer Abteilung aufzubauen oder benötigen Sie Unterstützung bei einer konkreten Fragestellung? Wir helfen Ihnen gerne dabei. Fordern Sie noch heute ein unverbindliches Beratungsangebot an!

Erfahren Sie mehr über  SAP HANA SQLScript

avatar

Sebastian Uhlig

Sebastian berät seit 2001 Unternehmen verschiedener Branchen zu SAP BI Lösungen im In- und Ausland und deckt den Bereich der Anforderungsaufnahme bis zur Realisierung komplexer Lösungen ab. Er hat Erfahrung in der Leitung von Projektteams und ist Architekt des Produktes NextTables. Privat fährt er Mountainbike und sieht sich gerne American Football Spiele an.

Sie haben eine Frage zum Blog?
Fragen Sie Sebastian Uhlig

Gender Hinweis Aufgrund der besseren Lesbarkeit wird im Text das generische Maskulinum verwendet. Gemeint sind jedoch immer alle Menschen.

Blog - NextLytics AG 

Welcome to our blog. In this section we regularly report on news and background information on topics such as SAP Business Intelligence (BI), SAP Dashboarding with Lumira Designer or SAP Analytics Cloud, Machine Learning with SAP BW, Data Science and Planning with SAP Business Planning and Consolidation (BPC), SAP Integrated Planning (IP) and SAC Planning and much more.

Informieren Sie mich über Neuigkeiten

Verwandte Beiträge

Letzte Beiträge