26.11.2014 Aufrufe

Interne Tabellen - G.I.B

Interne Tabellen - G.I.B

Interne Tabellen - G.I.B

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

1<br />

G.I.B Success Days<br />

Siegen,<br />

15.05.2013<br />

High Performance<br />

Analytics<br />

Performance - Was bedeutet das?<br />

Theorie - Performancedefinitionen bei SAP<br />

Selektionen - Datenbankzugriffe<br />

Große Datenmengen - <strong>Interne</strong> <strong>Tabellen</strong><br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


2<br />

G.I.B Success Days<br />

Siegen,<br />

15.05.2013<br />

High Performance<br />

Analytics<br />

Performance - Was bedeutet das?<br />

Theorie - Performancedefinitionen bei SAP<br />

Selektionen - Datenbankzugriffe<br />

Große Datenmengen - <strong>Interne</strong> <strong>Tabellen</strong><br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


3<br />

Performance - Motivation<br />

Das ganze SYSTEM ist<br />

langsam!!!<br />

Millsap: Thinking Clearly About Performance<br />

Was nun<br />

???<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


4<br />

Performance - Antwortzeit<br />

Quelle: SAP AG<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


5<br />

Performance - Erwartungen an die Antwortzeit<br />

Frontend<br />

Komplexe Backendanfrage<br />

1 s 2 s 3 s 4 s<br />

Einfache Backendanfrage<br />

Komplexe Analysen<br />

Response Time<br />

Quelle: SAP AG<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


6<br />

Performance - Wo können Probleme auftreten?<br />

SAP<br />

Netzwerk<br />

Betriebssystem /<br />

Hardware<br />

Datenbank<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


7<br />

Performance - Die Administratorensicht<br />

Erste Anlaufstelle bei Performanceproblemen: SAP-Administration<br />

‣ Ist das ganze System langsam?<br />

‣ Oder ist nur eine einzige Transaktion / Report / Job betroffen?<br />

‣ Ist das “System” gerade jetzt langsam?<br />

‣ Oder nur zu bestimmten Zeiten?<br />

‣ Immer? Ab und zu? Immer öfter?<br />

‣ Oder nur zu bestimmten Zeiten?<br />

‣ Ist es nur ein Benutzer, bei dem es Probleme gibt?<br />

‣ Oder sind es nur Benutzergruppen? Oder alle Benutzer?<br />

‣ ...<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


8<br />

Performance - Die Administratorentools<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


9<br />

Performance - Kein Systemproblem!<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


10<br />

Performance - Die Entwicklersicht<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


11<br />

G.I.B Success Days<br />

Siegen,<br />

15.05.2013<br />

High Performance<br />

Analytics<br />

Performance - Was bedeutet das?<br />

Theorie - Performancedefinitionen bei SAP<br />

Selektionen - Datenbankzugriffe<br />

Große Datenmengen - <strong>Interne</strong> <strong>Tabellen</strong><br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


12<br />

Die SAP-Architektur<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


13<br />

Die SAP-Antwortzeit<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


14<br />

Ein SAP-Dialogschritt<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


15<br />

Anteile an der SAP-Antwortzeit (1)<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


16<br />

Anteile an der SAP-Antwortzeit (2)<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


17<br />

Gewichtung der Zeitanteile<br />

Anteilzeit Empfohlener Wert Reeller Wert<br />

Dispatcher Wait Time<br />

Dialog Response Time < 1.000 ms<br />

< 10% Dialog Response Time<br />

< 50 ms < 5 ms<br />

Roll-In Time, Roll Out Time < 20 ms < 5 ms<br />

Load and Generation Time < 50 ms < 10 ms<br />

Enqueue Time < 5 ms < 5 ms<br />

Roll-Wait Time<br />

Database Request Time<br />

Processing Time<br />

< 20% Dialog Response Time<br />

< 200 ms < 300 ms<br />

< 40% Dialog Response Time<br />

< 600 ms<br />

< 40% Dialog Response Time<br />

CPU Time > 50% Processing Time > 90% Processing Time<br />

ABAP Processing Time ≈ Dialog Response Time<br />

- Roll-Wait Time<br />

- Database Request Time<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


18<br />

Analyse im System - Alle Schritte einer Transaktion (ST03)<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


19<br />

Analyse im System - Ein einzelner Dialogschritt (STAD) (1)<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


20<br />

Analyse im System - Ein einzelner Dialogschritt (STAD)<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


21<br />

G.I.B Success Days<br />

Siegen,<br />

15.05.2013<br />

High Performance<br />

Analytics<br />

Performance - Was bedeutet das?<br />

Theorie - Performancedefinitionen bei SAP<br />

Selektionen - Datenbankzugriffe<br />

Große Datenmengen - <strong>Interne</strong> <strong>Tabellen</strong><br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


22<br />

Positionierung der jetzt untersuchten Probleme<br />

Performance<br />

Netzwerk Hardware / OS Datenbank SAP<br />

System<br />

Anwendung<br />

Job<br />

Dialogreport<br />

Speicher<br />

Laufzeit<br />

DatabaseTime<br />

ProcessingTime<br />

Statement<br />

Programm<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


23<br />

Funktionsweise einer Datenbank - Teure Statements<br />

SAP R/3 Work Process<br />

SAP R/3 Work Process<br />

SAP R/3 Work Process<br />

Network<br />

communication<br />

DB Work Process<br />

DB Work Process<br />

DB Work Process<br />

Database<br />

CPU<br />

consumption<br />

Database<br />

memory<br />

consumption<br />

Database Shared Memory<br />

Shared Pool<br />

Database Cache<br />

Redo Log Buffer<br />

Database<br />

Service<br />

Processes<br />

Physical I/O<br />

Operating System<br />

Database Files<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


24<br />

Fehler 1: CHECK und WHERE<br />

SELECT vbeln erdat kunnr<br />

FROM vbak<br />

INTO gs_vbak.<br />

CHECK gs_vbak-vbeln GE gf_low<br />

AND gs_vbak-vbeln LE gf_high.<br />

APPEND gs_vbak TO gt_vbak.<br />

ENDSELECT.<br />

SELECT vbeln erdat kunnr<br />

FROM vvbak<br />

INTO gs_vbak<br />

WHERE vbeln BETWEEN gf_low AND gf_high.<br />

APPEND gs_vbak TO gt_vbak.<br />

ENDSELECT.<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


25<br />

Fehler 2: ARAY FETCH und SELECT LOOP (1)<br />

SELECT * FROM kna1<br />

INTO gs_kna1.<br />

APPEND gs_kna1 TO gt_kna1.<br />

ENDSELECT.<br />

SELECT loop<br />

Object Oper Rec<br />

KNA1<br />

KNA1<br />

KNA1<br />

REOPEN<br />

FETCH<br />

FETCH<br />

0<br />

403<br />

403<br />

Data quantity and data<br />

transfer is identical!<br />

KNA1<br />

FETCH<br />

194<br />

SELECT * FROM kna1<br />

INTO TABLE gt_kna1.<br />

ARRAY FETCH<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


26<br />

Fehler 2: ARAY FETCH und SELECT LOOP (2)<br />

SELECT INTO TABLE<br />

ABAP<br />

SAP WebAS Kernel + DB Time<br />

ABAP Time<br />

Time<br />

Database<br />

Interface<br />

Database<br />

SELECT/ENDSELECT<br />

ABAP<br />

Time<br />

Database<br />

Interface<br />

Database<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


27<br />

Funktionsweise einer Datenbank - Datenzugriff<br />

Execution Plan<br />

ROWID MANDT<br />

VBELN<br />

POSNR MATNR ...<br />

...<br />

44339 001<br />

000000122<br />

0003<br />

004711 ...<br />

...<br />

ROWID MANDT<br />

VBELN<br />

POSNR MATNR ...<br />

...<br />

45332 001<br />

000013247<br />

0003<br />

000815 ...<br />

...<br />

ROWID MANDT<br />

VBELN<br />

POSNR MATNR ...<br />

...<br />

45876 001<br />

000000122<br />

0013<br />

001234 ...<br />

...<br />

<strong>Tabellen</strong>- und<br />

Indexstatistiken<br />

SELECT STATEMENT<br />

TABLE ACCESS FULL<br />

VVBAK<br />

ROWID MANDT<br />

VBELN<br />

POSNR MATNR ...<br />

...<br />

46894 002<br />

00009658<br />

0012<br />

000123 ...<br />

...<br />

Full Table Scan<br />

Cost-based<br />

Database<br />

Optimizer<br />

ROWID MANDT<br />

VBELN<br />

ERDAT<br />

ERZET<br />

ERNAM<br />

...<br />

...<br />

65872 001<br />

0000123<br />

SELECT STATEMENT<br />

...<br />

INDEX UNIQUE SCAN<br />

VVBAK~0<br />

Index Access<br />

Mögliche<br />

Zugriffspfade<br />

SELECT STATEMENT<br />

INDEX RANGE SCAN<br />

VVBAK~0<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


28<br />

Funktionsweise einer Datenbank - Indexnutzung<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


29<br />

Fehler 3: Übergehen vorhandener Indizes<br />

SELECT * FROM bkpf<br />

INTO TABLE gt_bkpf<br />

CLIENT SPECIFIED<br />

WHERE mandt = '001'<br />

AND belnr = '0000001234'.<br />

BKPF Primärschlüssel:<br />

‣ MANDT<br />

‣ BUKRS<br />

‣ BELNR<br />

‣ GJAHR<br />

SELECT * FROM bkpf<br />

INTO TABLE gt_bkpf<br />

CLIENT SPECIFIED<br />

WHERE mandt = '001'<br />

AND bukrs = '0001'<br />

AND belnr = '0000001234'.<br />

Primär=<br />

index<br />

vorhanden<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


30<br />

Fehler 4 - Viele Einzelsatzzugriffe<br />

PROGRAM ZCHECK_ORDERS.<br />

...<br />

SELECT * FROM vbak<br />

INTO TABLE gt_vbak<br />

WHERE angdat >= '20130101'.<br />

LOOP AT gt_vbak INTO gs_vbak.<br />

...<br />

SELECT SINGLE * FROM kna1<br />

INTO gs_kna1<br />

WHERE kunnr = gs_vbak-kunnr.<br />

SELECT SINGLE in<br />

einer Schleife:<br />

Viele EINZELNE<br />

Datenbankzugriffe<br />

...<br />

ENDLOOP.<br />

...<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


31<br />

<strong>Tabellen</strong>pufferung - abseits vom SAP <strong>Tabellen</strong>puffer (1)<br />

PROGRAM ZCHECK_ORDERS.<br />

...<br />

SELECT * FROM vbak<br />

INTO TABLE gt_vbak<br />

WHERE angdat >= '20130101'.<br />

LOOP AT gt_vbak INTO gs_vbak.<br />

...<br />

PERFORM buffer_kna1<br />

USING fv_kunnr = gs_vbak-kunnr<br />

CHANGING fs_tab = gs_kna1<br />

fs_not_found = gs_ok.<br />

Stattdessen:<br />

Aufruf einer Formroutine<br />

zur "Puffer"behandlung<br />

...<br />

ENDLOOP.<br />

...<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


32<br />

<strong>Tabellen</strong>pufferung - abseits vom SAP <strong>Tabellen</strong>puffer (2)<br />

FORM buffer_kna1<br />

USING fv_kunnr TYPE kna1-kunnr<br />

CHANGING fs_kna1 TYPE kna1<br />

fv_not_found TYPE c.<br />

* überprüfe den internen "Puffer"<br />

READ TABLE gt_buf_kna1 INTO fs_kna1<br />

WITH TABLE KEY kunnr = fv_kunnr.<br />

* Wenn nicht im "Puffer", laden von der DB ...<br />

IF ( sy-subrc 0 ).<br />

SELECT SINGLE * FROM kna1<br />

INTO fs_kna1<br />

WHERE kunnr = fv_kunnr.<br />

IF ( sy-subrc 0 ).<br />

fv_not_found = 'X'.<br />

ELSE.<br />

* ... und im "Puffer" speichern<br />

INSERT fs_kna1 INTO gt_buf_kna1.<br />

ENDIF.<br />

ENDIF.<br />

ENDFORM.<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


33<br />

Problemfelder bei gleichzeitigem Zugriff auf mehrere <strong>Tabellen</strong> (1)<br />

PROGRAM ZCHECK_ORDERS.<br />

...<br />

SELECT * FROM crmh_buag_bdata<br />

INTO TABLE gt_crm<br />

WHERE partner = '0000004711'.<br />

...<br />

CRM:<br />

Suche nach Bankdaten einer<br />

Geschäftsvereinbarung.<br />

Ein kleines, unschuldiges<br />

SELECT-Statement ...<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


34<br />

Problemfelder bei gleichzeitigem Zugriff auf mehrere <strong>Tabellen</strong> (2)<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


35<br />

G.I.B Success Days<br />

Siegen,<br />

15.05.2013<br />

High Performance<br />

Analytics<br />

Performance - Was bedeutet das?<br />

Theorie - Performancedefinitionen bei SAP<br />

Selektionen - Datenbankzugriffe<br />

Große Datenmengen - <strong>Interne</strong> <strong>Tabellen</strong><br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


36<br />

Positionierung der jetzt untersuchten Probleme<br />

Performance<br />

Netzwerk Hardware / OS Datenbank SAP<br />

System<br />

Anwendung<br />

Job<br />

Dialogreport<br />

Speicher<br />

Laufzeit<br />

DatabaseTime<br />

ProcessingTime<br />

Statement<br />

Programm<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


37<br />

<strong>Interne</strong> <strong>Tabellen</strong> - <strong>Tabellen</strong>arten<br />

<strong>Tabellen</strong>arten<br />

Index Tabelle<br />

Standard-Tabelle Sortierte Tabelle Hash-Tabelle<br />

Verfügbar seit SAP Basis 4.0 SAP Basis 4.0<br />

Index (sy-tabix) Ja Ja Nein<br />

<strong>Tabellen</strong>schlüssel<br />

Optional, niemals<br />

eindeutig<br />

Notwendig; kann eindeutig<br />

sein, muß aber nicht<br />

Notwendig; muß<br />

eindeutig sein<br />

Primärschlüssel Nein Ja, sortiert Ja, mit Hash-Funktion<br />

Zugriff variabel Wertebereich Einzelsatz<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


38<br />

<strong>Interne</strong> <strong>Tabellen</strong> - READ - Suchfolgen<br />

Suchtyp # Steps Scaling Beispiele für READ TABLE<br />

Direct Access<br />

einzelner<br />

Zugriff<br />

O(1)<br />

• READ TABLE itab INDEX<br />

von Index-Tabelle (standard oder sortiert)<br />

• READ TABLE itab WITH TABLE KEY von<br />

Hash-Tabelle<br />

Binary Search<br />

Einige<br />

Zugriffsschritte<br />

O(logN)<br />

• READ TABLE WITH TABLE KEY von<br />

sortierter Tabelle<br />

• READ TABLE itab WITH KEY k1 von<br />

Standard-Tabelle mit BINARY SEARCH<br />

(itab sortiert nach k1 )<br />

Sequential Scan<br />

gesamte<br />

Tabelle<br />

O(N)<br />

• READ TABLE itab WITH KEY<br />

von Standard-Tabelle<br />

• READ von Hash-Tabelle, falls kompletter<br />

<strong>Tabellen</strong>schlüssel nicht angegeben<br />

• READ von sortierter Tabelle, falls das erste<br />

Schlüsselfeld nicht angegeben ist<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


39<br />

<strong>Interne</strong> <strong>Tabellen</strong> - READ - Zugriffszeiten (1)<br />

100,0<br />

T<br />

0,0<br />

0 500 1.000 1.500 2.000 2.500 3.000<br />

N<br />

T<br />

0,8<br />

0,7<br />

0,6<br />

0,5<br />

0,4<br />

0 500 1.000 1.500 2.000 2.500 3.000<br />

N<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


40<br />

<strong>Interne</strong> <strong>Tabellen</strong> - READ - Zugriffszeiten (2)<br />

1,5<br />

T<br />

1,0<br />

0,5<br />

0,0<br />

0 10 20 30 40 50<br />

N<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


41<br />

<strong>Interne</strong> <strong>Tabellen</strong> - READ - Zugriffe<br />

Scaling:<br />

‣ Direct Access: O(1)<br />

‣ Binary Search: logN<br />

‣ Sequential Scan: N<br />

Schnell sind:<br />

‣ Direkte Zugriffe auf Hash-<strong>Tabellen</strong> (falls der komplette<br />

<strong>Tabellen</strong>schlüssel angegeben ist)<br />

‣ Binäre Suchen auf sortierte <strong>Tabellen</strong> (falls der führende Teil<br />

des <strong>Tabellen</strong>schlüssels angegeben ist)<br />

Langsam sind:<br />

‣ Sequential Scans auf Standard-<strong>Tabellen</strong><br />

‣ Alle anderen Zugriffe auf sortierte und Hash-<strong>Tabellen</strong>.<br />

Kleine <strong>Tabellen</strong> (N < 30 ... 50):<br />

‣ Performanceunterschiede können vernachlässigt werden<br />

Optimierungen:<br />

‣ Möglich für Sequential Scans<br />

‣ Initiale Kosten können nur durch sehr viele READs<br />

kompensiert werden.<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


42<br />

<strong>Interne</strong> <strong>Tabellen</strong> - Operationsklassen<br />

Zugriffe auf interne <strong>Tabellen</strong> geschehen nicht nur durch READ, sondern<br />

auch durch andere ABAP-Kommandos.<br />

Alle diese Kommandos lassen sich in Operationsklassen einteilen.<br />

Operationsklassen Operationen Operationstypen<br />

• INDEX idx<br />

READ, DELETE, MODIFY,<br />

Single Line 1<br />

• FROM wa<br />

APPEND, INSERT, COLLECT<br />

• WITH [TABLE] KEY<br />

Multi Line 2<br />

Full Table 3<br />

LOOP, DELETE, MODIFY,<br />

APPEND LINES, INSERT LINES<br />

SORT, MOVE, SELECT … INTO<br />

TABLE, DELETE ADJACENT<br />

DUPLICATES, COLLECT in LOOP<br />

• FROM idx1 TO idx2<br />

• WHERE … = …<br />

• INTO TABLE …<br />

• <br />

• <br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


43<br />

<strong>Interne</strong> <strong>Tabellen</strong> - Multi Line Operation (1)<br />

LOOP AT itab INTO wa [FROM idx1][TO idx2][WHERE …].<br />

Optimierung von LOOP WHERE:<br />

‣ Hash-<strong>Tabellen</strong><br />

• Sind dann optimiert, wenn der komplette TABLE KEY verwendet wird.<br />

• Alle anderen Zugriffe: Sequentielle Scans.<br />

• Da der <strong>Tabellen</strong>schlüssel eindeutig sein muß, verhält sich ein<br />

optimiertes LOOP genauso wie ein READ.<br />

‣ Sortierte <strong>Tabellen</strong><br />

• Complete or leading part of the TABLE KEY: Optimized access to first<br />

record of key range.<br />

• Alle anderen Schlüssel: Sequentielle Scans.<br />

‣ Standard-<strong>Tabellen</strong><br />

• Kein optimierter Zugriff bei nicht modifizierten <strong>Tabellen</strong> möglich, nur<br />

sequentielle Scans.<br />

• Ist die Tabelle jedoch bereits beliebig sortiert, ist ein programmtech=<br />

nischer Ansatz zur Optimierung möglich.<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


44<br />

<strong>Interne</strong> <strong>Tabellen</strong> - Multi Line Operation (2)<br />

LOOP WHERE: Optimized by BINARY SEARCH<br />

1<br />

2<br />

SORT itab BY f1 f2.<br />

READ TABLE itab TRANSPORTING NO FIELDS<br />

WITH KEY f1 = a f2 = b BINARY SEARCH.<br />

idx1 = sy-tabix.<br />

IF ( sy-subrc = 0 ).<br />

3<br />

4<br />

LOOP AT itab INTO wa FROM INDEX idx1.<br />

idx2 = sy-tabix.<br />

IF NOT ( wa-f1 = a AND wa-f2 = b ).<br />

EXIT.<br />

ENDIF.<br />

* Prozessierung oder [DELETE/MODIFY itab INDEX idx2.]<br />

ENDLOOP.<br />

ENDIF.<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


45<br />

<strong>Interne</strong> <strong>Tabellen</strong> - Geschachtelte Lesezugriffe<br />

Häufige READs in geschachtelten Zugriffen:<br />

LOOP AT itab1 INTO wa1.<br />

READ TABLE itab2 INTO wa2<br />

WITH KEY field1 = wa1-field1..<br />

...<br />

ENDLOOP.<br />

Verhalten zur Laufzeit:<br />

‣ Abhängig vom Zugriffstyp<br />

‣ Sind die <strong>Tabellen</strong>größen N1 und N2 in derselben<br />

Größenordnung, wird die Sache interessant:<br />

N1*1 N (linear)<br />

t ~ N1*logN2 N1 = N2 = N N*logN (linear-log)<br />

N1*N2 N*N (quadratic)<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


46<br />

<strong>Interne</strong> <strong>Tabellen</strong> - Versteckte Nichtlinearitäten<br />

Testfall (kleine N)<br />

40<br />

N Time<br />

1 1,0<br />

10 1,9<br />

50 8,4<br />

100 21,0<br />

Scheint<br />

linear für<br />

kleine N<br />

30<br />

20<br />

10<br />

0<br />

0 10 20 30 40 50 60 70 80 90 100 110 120<br />

Produktivfall (große N)<br />

120.000<br />

1.000 1.290,9<br />

10.000 120.900,0<br />

Quadratisch<br />

für große N<br />

100.000<br />

80.000<br />

60.000<br />

40.000<br />

20.000<br />

Nichtlinearitäten werden für kleine N schnell<br />

übersehen.<br />

Analyse für große N ist einfach: Debugging<br />

0<br />

0,0 2.000,0 4.000,0 6.000,0 8.000,0 10.000,0<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting


47<br />

Zusammenfassung<br />

‣ Performanceanalyse - „High Performance Analytics“ - ist ein mühsames<br />

Geschäft!<br />

‣ Nichts ist einfach, wenn es um die Performance in einem SAP-System<br />

geht!<br />

‣ Zusammenarbeit zwischen der Basisadministration und den Entwicklern<br />

ist unerläßlich!<br />

‣ Als Entwickler hat man am ehesten Einfluß auf die Performance, wenn<br />

man bei Datenselektionen von der Datenbank und bei der Verwaltung von<br />

großen Datenmengen Vorsicht und gesunden Menschenverstand walten<br />

läßt.<br />

15.05.2013, Dr. Alexander Maetzing, ama - Training&Consulting

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!