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