SAP NetWeaver BW-Performanceoptimierung

Werbung
1182.book Seite 3 Mittwoch, 4. März 2009 6:38 18
Thomas Schröder
SAP NetWeaver BW-Performanceoptimierung
®
Bonn 폷 Boston
1182.book Seite 5 Mittwoch, 4. März 2009 6:38 18
Auf einen Blick
1
Einleitung ................................................................
2
Einführung Data Warehouse und SAP
NetWeaver BW .......................................................
3
19
27
Grundlagen der SAP NetWeaver
BW-Architektur ......................................................
47
4
Grundlagen der SAP-Speicherkonfiguration ...........
61
5
SAP NetWeaver BW-Sizing ....................................
81
6
SAP NetWeaver BW-Datenmodell ......................... 109
7
Analyse von Datenbank, Speicher und Hardware ... 181
8
Analyse der Systemlast ........................................... 247
9
Indizes und DB-Statistiken ..................................... 331
10
Information Lifecycle Management und
Archivierung ............................................................ 395
11
Reportingperformance ............................................ 427
12
Performanceoptimierung durch Aggregate ............ 501
13
Business Warehouse Accelerator ........................... 559
14
Performanceoptimierung von InfoProvidern .......... 605
15
Performanceoptimierung von Extraktions- und
Ladeprozessen ........................................................ 647
16
BW-Performance-Review ....................................... 705
A
Anhang .................................................................... 745
B
Der Autor ................................................................ 805
1182.book Seite 7 Mittwoch, 4. März 2009 6:38 18
Inhalt
1
Einleitung ................................................................. 19
2
Einführung Data Warehouse und
SAP NetWeaver BW ................................................. 27
2.1
2.2
2.3
2.4
3
31
32
35
36
38
39
42
42
SAP NetWeaver Application Server .............................
Softwarekomponenten des SAP NetWeaver
BW-Systems ...............................................................
48
55
Grundlagen der SAP-Speicherkonfiguration ............ 61
4.1
4.2
5
27
Grundlagen der SAP NetWeaver BW-Architektur ... 47
3.1
3.2
4
Einführung Data Warehouse .......................................
Unterschiede zwischen operativen und dispositiven
Systemen ....................................................................
Aufbau von Data-Warehouse-Systemen ......................
Überblick über SAP NetWeaver BW 7.0 ......................
2.4.1 Administration und Customizing ....................
2.4.2 Datenextraktion in SAP NetWeaver BW .........
2.4.3 Datenablage in SAP NetWeaver BW ..............
2.4.4 Metadatenmanagement .................................
2.4.5 Analyse und Reporting ...................................
Begriffserklärungen .....................................................
Funktionsweise des SAP-Speichermanagements ..........
4.2.1 Benutzerkontext und Moduskontext ..............
4.2.2 SAP-Speichertypen .........................................
4.2.3 Reihenfolge der Speicherbelegung .................
4.2.4 Zero Administration Memory Management
unter Windows ..............................................
4.2.5 SAP-Profilparameter .......................................
62
63
63
64
71
75
75
SAP NetWeaver BW-Sizing ..................................... 81
5.1
5.2
5.3
5.4
Sizing-Methoden ........................................................
Sizing-Berechnungen ..................................................
Der Sizing-Prozess ......................................................
SAP Quick Sizer ..........................................................
83
86
86
88
7
1182.book Seite 8 Mittwoch, 4. März 2009 6:38 18
Inhalt
5.5
5.6
5.7
5.8
5.9
6
6.3
6.4
6.5
6.6
6.7
6.8
6.9
6.10
Das Star-Schema-Datenmodell ...................................
Das erweiterte Star-Schema-Datenmodell in
SAP NetWeaver BW ...................................................
6.2.1 Faktentabellen in BW ....................................
6.2.2 Dimensionentabellen in BW ..........................
6.2.3 Zeiten ...........................................................
6.2.4 Kennzahlen ...................................................
6.2.5 Einheiten .......................................................
Modellierung des SAP NetWeaver BW-Datenmodells
(InfoCube) .................................................................
6.3.1 Stammdatentabellen in SAP NetWeaver BW ...
6.3.2 SID-Tabellen in SAP NetWeaver BW .............
6.3.3 Externe Hierarchien in SAP NetWeaver BW ...
6.3.4 Zusammenfassung .........................................
Realtime-InfoCubes ...................................................
DataStore-Objekte (DSO) ..........................................
6.5.1 Standard-DataStore-Objekte .........................
6.5.2 DataStore-Objekte für direktes Schreiben ......
6.5.3 Schreiboptimierte DataStore-Objekte ............
Virtuelle InfoProvider .................................................
InfoSets .....................................................................
MultiProvider ............................................................
Kennzahlenmodell und Kontenmodell .......................
Modellierungsaspekte aus Performancesicht ..............
110
111
114
114
115
116
123
124
129
137
143
150
152
154
155
157
157
159
162
166
171
173
Analyse von Datenbank, Speicher und Hardware .... 181
7.1
8
99
101
101
103
105
105
105
107
108
SAP NetWeaver BW-Datenmodell .......................... 109
6.1
6.2
7
SAP Application Performance Standard (SAPS) ...........
Sizing der Festplattenkapazität ...................................
5.6.1 Kalkulation von InfoCubes .............................
5.6.2 Kalkulation von DataStore-Objekten .............
5.6.3 Kalkulation von PSA-Tabellen ........................
5.6.4 Gesamtkalkulation Festplattenkapazität .........
CPU-Sizing .................................................................
Memory-Sizing ..........................................................
Zusammenfassung ......................................................
Allgemeine Datenbankaspekte in
SAP NetWeaver BW ................................................... 182
7.1.1 BW-Tabellentypen ......................................... 182
1182.book Seite 9 Mittwoch, 4. März 2009 6:38 18
Inhalt
7.2
7.3
7.4
7.5
7.6
7.7
7.8
7.9
8
7.1.2 Indextypen in SAP NetWeaver BW .................
7.1.3 Star-Transformation .......................................
Übersicht SAP-Performanceanalysewerkzeuge ............
Analyse der Datenbank ...............................................
7.3.1 Begriffserklärungen ........................................
7.3.2 Speicherbereiche der Datenbank ....................
7.3.3 Analyse der Shared SQL Area .........................
7.3.4 Analyse der Table Scans .................................
7.3.5 Analyse der Sortiervorgänge ...........................
7.3.6 Analyse der Datenbankpuffer .........................
7.3.7 Analyse von Speicherplatz, Tabellen und
Indizes ...........................................................
7.3.8 Überprüfung der DB-Parameter .....................
7.3.9 DBA-Einplanungskalender ..............................
Analyse der SAP-Speicherbereiche ..............................
7.4.1 Analyse der SAP-Puffer ..................................
7.4.2 Analyse des SAP-Speichers .............................
7.4.3 Analyse des allokierten Speichers und
des Hauptspeichers ........................................
7.4.4 Analyse des Auslagerungsspeichers ................
7.4.5 Analyse der Profilparameter des
SAP-Memory-Management-Monitors ............
Analyse der Hardware .................................................
7.5.1 Analyse eines CPU- bzw.
Hauptspeicher-Engpasses ...............................
7.5.2 Analyse von Schreib-/Lese-Problemen (I/O) ...
Analyse der SAP-Workprozesse ..................................
Analyse der Benutzermodi ..........................................
Speicherverbrauch von Benutzer und
Modi analysieren ........................................................
Kontinuierliche Systemüberwachung (Monitoring) ......
7.9.1 Zentraler Überwachungsmonitor im CCMS .....
7.9.2 SAP Solution Manager ...................................
7.9.3 SAP Solution Manager Diagnostics .................
184
185
187
189
189
191
198
203
204
205
206
211
211
212
214
217
219
222
225
226
227
229
231
236
237
239
240
243
244
Analyse der Systemlast ............................................ 247
8.1
Grundlagen und Begriffe ............................................. 248
8.1.1 Ablauf eines Transaktionsschrittes im
SAP-System ................................................... 248
8.1.2 Verteilung der Antwortzeiten ......................... 252
9
1182.book Seite 10 Mittwoch, 4. März 2009 6:38 18
Inhalt
8.2
8.3
8.4
8.5
8.6
8.7
9
253
257
261
261
265
268
270
272
275
276
281
288
290
294
296
298
301
306
312
322
323
324
328
Indizes und DB-Statistiken ...................................... 331
9.1
9.2
9.3
10
Der Systemlastmonitor ...............................................
SAP-Systemlastanalyse ...............................................
BW-Systemlastanalyse ................................................
8.4.1 BW-Query-Laufzeit-Statistiken ......................
8.4.2 Event-Konzept der BW-Statistikdaten ...........
8.4.3 Pflege der BW-Statistikeigenschaften .............
8.4.4 Analyse der Statistikdaten von MultiProviderQueries .........................................................
8.4.5 Löschung von BW-Statistikdaten ...................
Werkzeuge für die Analyse der Statistikdaten .............
8.5.1 Analyse der Statistikdaten mit der
Transaktion SE16 ...........................................
8.5.2 Analyse der Statistikdaten mit dem
Systemlastmonitor (Transaktion ST03N) ........
8.5.3 Analyse der Statistikdaten mit dem
Query-Monitor (Transaktion RSRT) ................
8.5.4 Analyse der Statistikdaten mit Queries
des Technischen Contents .............................
8.5.5 Analyse der Statistikdaten mit BEx
Web Analyzer ................................................
8.5.6 Analyse der Statistikdaten mit dem Analyseund Service-Toolset (Transaktion ST13) .........
8.5.7 Anwendungsanalyse (Transaktion ST14) ........
8.5.8 Analyse der Statistikdaten mit dem
BW Administration Cockpit ...........................
8.5.9 Auswertungsstrategien und Tipps ..................
Technischer Content ..................................................
Übernahme des Technischen Contents .......................
8.7.1 Übernahme Technischer Content (Gesamt) ....
8.7.2 Übernahme Technischer Content mit
BW-Content-Sammelanschluss ......................
8.7.3 Prozessketten des Technischen Contents .......
Grundlagen der DB-Speicherverwaltung .....................
Grundlagen zu Indizes und Ausführungsplänen ..........
9.2.1 Ein Einführungsbeispiel .................................
9.2.2 Tabellen-/Indexzugriffsalgorithmen ...............
9.2.3 Join-Algorithmen ...........................................
Strukturtypen von Indizes ..........................................
332
334
334
337
339
341
1182.book Seite 11 Mittwoch, 4. März 2009 6:38 18
Inhalt
9.4
9.5
9.6
9.7
9.8
9.9
Indizierungsschema in SAP NetWeaver BW ................
9.4.1 Indizierung bei Standard-InfoCubes ...............
9.4.2 Indizierung bei transaktionalen InfoCubes ......
9.4.3 Indizierung partitionierter InfoCubes
(Oracle) ..........................................................
9.4.4 Indizierung von DataStore-Objekten ..............
9.4.5 Indizierung der Stammdatentabellen
(X-/Y-Tabellen) ..............................................
Star-Join-Ausführungsplan ..........................................
Administration der Indizes ..........................................
9.6.1 Indizes überprüfen .........................................
9.6.2 Indizes aufbauen ............................................
9.6.3 Index-Qualität überprüfen .............................
Datenbankoptimierer .................................................
DB-Statistiken ............................................................
Administration der DB-Statistiken ...............................
9.9.1 Administration der DB-Statistiken mit
BRCONNECT .................................................
9.9.2 Administration der DB-Statistiken mit
DBA-Einplanungskalender ..............................
9.9.3 Administration der DB-Statistiken mit
Transaktion DB20 ..........................................
9.9.4 Administration der DB-Statistiken für
InfoCubes ......................................................
347
347
354
355
356
358
360
366
367
371
376
379
382
384
385
386
391
393
10 Information Lifecycle Management und
Archivierung ............................................................. 395
10.1
10.2
10.3
10.4
10.5
10.6
Archivieren und Löschen von Basis-InfoCubes und
DataStore-Objekten ...................................................
10.1.1 Durchführung der Archivierung ......................
10.1.2 Durchführung des Löschens ...........................
10.1.3 Wiederherstellung archivierter Daten .............
Löschen von Stammdaten ...........................................
Löschen von PSA-Daten und Change-Log ...................
Archivieren und Löschen von Request-Informationen ...
10.4.1 Durchführung der Archivierung ......................
10.4.2 Durchführung des Löschens ...........................
10.4.3 Zurückladen von Request-Verwaltungsdaten ...
Löschen von BW-Statistikdaten ..................................
Archivieren und Löschen von Anwendungs-Logs ........
399
404
405
407
408
412
415
418
420
421
423
424
11
1182.book Seite 12 Mittwoch, 4. März 2009 6:38 18
Inhalt
11 Reportingperformance ............................................. 427
11.1
11.2
11.3
11.4
11.5
11.6
11.7
11.8
11.9
OLAP-Prozessor .........................................................
OLAP-Cache ..............................................................
11.2.1 Hauptspeicher-Cache ....................................
11.2.2 Persistenter Cache .........................................
11.2.3 Cache-Modus ................................................
11.2.4 Cache-Invalidierung und Delta-Caching .........
11.2.5 Cache-Partitionierung ....................................
OLAP-Cache-Monitor ................................................
11.3.1 Cache-Verdrängung und -Auslagerung ..........
11.3.2 Cache-Struktur ..............................................
11.3.3 OLAP-Eigenschaften für InfoCubes ................
Query-Monitor der Analytical Engine .........................
11.4.1 Query-Eigenschaften .....................................
11.4.2 Debug-Optionen ...........................................
11.4.3 Performance Informationen im
Query-Monitor ..............................................
11.4.4 Technische Informationen im
Query-Monitor ..............................................
BW-Trace-Tool ..........................................................
11.5.1 Aufzeichnung von Traces ...............................
11.5.2 Abspielen eines aufgezeichneten Trace ..........
CAT-Tool ...................................................................
BEx Information Broadcaster ......................................
MultiProvider-Queries ...............................................
Frontend-Performance und Netzwerk ........................
11.9.1 BEx Analyzer .................................................
11.9.2 Hinweise zur Performanceoptimierung ..........
11.9.3 Web-Reporting .............................................
11.9.4 Hardware- und Software-Empfehlungen
für das SAP NetWeaver BW-Frontend ...........
427
431
432
434
435
440
442
444
447
448
451
452
453
462
466
467
470
470
472
474
478
480
490
490
493
498
498
12 Performanceoptimierung durch Aggregate ............. 501
12.1
12
Grundlagen ................................................................
12.1.1 Aggregate auf Merkmalen .............................
12.1.2 Aggregate auf Navigationsattributen .............
12.1.3 Aggregate auf Hierarchieknoten ....................
12.1.4 Aggregate auf Festwerten ..............................
12.1.5 Ausnahmeaggregationen in InfoCubes ...........
12.1.6 Line-Item-Aggregate (flache Aggregate) ........
504
504
508
510
513
514
517
1182.book Seite 13 Mittwoch, 4. März 2009 6:38 18
Inhalt
12.2
12.3
12.4
12.5
Automatische Erstellung von Aggregaten ....................
12.2.1 Aggregate vorschlagen aus BW-Statistik .........
12.2.2 Aggregat vorschlagen aus Query-Definition ....
Manuelle Erstellung von Aggregaten ...........................
12.3.1 Analyse der Query mit dem Query-Monitor
(RSRT) ............................................................
12.3.2 Anlegen des Aggregats ...................................
12.3.3 Prüfung und Bewertung von Aggregaten ........
Pflege von Aggregaten ................................................
12.4.1 Roll-up von Aggregaten .................................
12.4.2 Prüfung des Aggregatbaums
(Roll-up-Hierarchie) .......................................
12.4.3 Zusammenfassung von Aggregaten/
Optimierung ..................................................
12.4.4 Abschaltung von Aggregaten ..........................
12.4.5 Datenbeladung und Roll-up von Aggregaten
auswerten/überwachen ..................................
12.4.6 Hierarchie-/Attributänderungen .....................
12.4.7 Parametrisierung des Hierarchie-/
Attributänderungslaufs ...................................
12.4.8 Hierarchie-/Attributänderungslauf auswerten/
überwachen ...................................................
Performanceeinstellungen für die Verwaltung von
Aggregaten .................................................................
12.5.1 Delta-Verfahren/Neuaufbau ...........................
12.5.2 Blockgrößen für den Neuaufbau von
Aggregaten ....................................................
12.5.3 Prä-Analyse des Aggregate-Füllens .................
12.5.4 Parallelisieren von Verwaltungsprozessen
der Aggregate ................................................
519
521
522
524
525
528
530
532
532
539
541
543
543
545
547
549
550
550
551
553
555
13 Business Warehouse Accelerator ............................. 559
13.1
13.2
13.3
13.4
Grundlagen des Business Warehouse Accelerators ......
Architektur des Business Warehouse Accelerators .......
Verbindung von BW Accelerator und
SAP NetWeaver BW ...................................................
InfoCube-Architektur im BW Accelerator ....................
13.4.1 Faktentabellen im BW Accelerator .................
13.4.2 Dimensionentabellen im BW Accelerator .......
13.4.3 Stammdatentabellen im BW Accelerator ........
560
564
569
571
571
572
572
13
1182.book Seite 14 Mittwoch, 4. März 2009 6:38 18
Inhalt
13.5
13.6
13.7
Administration des BW Accelerators ..........................
13.5.1 Erstellen, Füllen und Löschen von
BWA-Indizes .................................................
13.5.2 Hierarchie- und Attributsänderungen
(Change-Run) ................................................
Optimieren von BWA-Indizes ....................................
13.6.1 BWA-Delta-Index ..........................................
13.6.2 Neuaufbau von BWA-Indizes .........................
13.6.3 Verteilung von BWA-Indizes ..........................
13.6.4 Globale Parameter von BWA-Indizes .............
Analysieren und Testen von BWA-Indizes ..................
13.7.1 Überwachung des BWAIndizierungsprozesses ....................................
13.7.2 Laufzeitanalyse im Query-Monitor
(Transaktion RSRT) ........................................
13.7.3 Test- und Prüfprogramme (RSRV-Checks) ......
13.7.4 BWA-Datenkonsistenz-Checkcenter ..............
574
576
581
582
582
586
587
588
591
591
594
596
602
14 Performanceoptimierung von InfoProvidern ........... 605
14.1
14.2
14.3
14.4
14
Komprimierung von InfoCubes ...................................
Partitionierung von InfoCubes ....................................
14.2.1 Partitionierung auf Datenbankebene –
Range-Partitionierung ...................................
14.2.2 Partitionierung auf Datenbankebene –
Clustering ......................................................
14.2.3 Repartitionierung der Range-Partitionierung ...
14.2.4 Monitoring und Fehlerbehandlung der
Repartitionierung ..........................................
14.2.5 Partitionierung auf Applikationsebene –
Logische Partitionierung ................................
Performanceoptimierung von DataStore-Objekten .....
14.3.1 Vermeidung der SID-Ermittlung ....................
14.3.2 Clustering auf der Tabelle für die
aktiven Daten (A-Tabelle) ..............................
14.3.3 Indizierung ....................................................
14.3.4 Eindeutige Datensätze ...................................
14.3.5 Unterdrückung der Optimizer-Statistiken ......
14.3.6 Einstellungen zu den Laufzeitparametern .......
Performanceoptimierung von PSA-Tabellen ...............
605
609
610
618
623
629
631
636
636
637
638
639
640
641
644
1182.book Seite 15 Mittwoch, 4. März 2009 6:38 18
Inhalt
15 Performanceoptimierung von Extraktions- und
Ladeprozessen .......................................................... 647
15.1
15.2
15.3
15.4
15.5
15.6
15.7
15.8
Datenquellen und deren Anbindung ...........................
Datenfluss in SAP NetWeaver BW ..............................
Techniken zur Kommunikation zwischen SAP ERP
und SAP NetWeaver BW ............................................
Übertragungstechniken ...............................................
15.4.1 Application Link Enabling (ALE) .....................
15.4.2 Intermediate Document (IDoc) ......................
15.4.3 Business Application Programming
Interface (BAPI) .............................................
Persistent Staging Area (PSA) ......................................
Performanceoptimierung für Datenextraktions- und
Staging-Prozesse .........................................................
15.6.1 Einstellungen zur Datenpaketgröße ................
15.6.2 Performanceoptimierung durch
Parallelisierung in der Datenextraktion ...........
15.6.3 Performanceoptimierung durch
Parallelisierung in der Datentransformation ....
15.6.4 Performanceoptimierung bei
3.x-DataSources .............................................
15.6.5 Performanceaspekte bei der Fortschreibung
von InfoCubes ................................................
Monitoring von Extraktions- und
Datentransferprozessen ..............................................
15.7.1 Monitoring der Datenextraktion ....................
15.7.2 Monitoring der Datentransferprozesse
(DTP) .............................................................
Fehlersuche, Simulation und Debugging von
Datentransferprozessen ..............................................
15.8.1 Simulation von Datentransferprozessen ..........
15.8.2 Debugging von Datentransferprozessen .........
648
652
657
659
659
660
660
660
663
667
673
676
678
682
688
689
698
700
701
704
16 BW-Performance-Review ......................................... 705
16.1
16.2
Untersuchungsbereich Softwareanalyse .......................
16.1.1 SAP NetWeaver BW .......................................
16.1.2 SAP-Frontend-Analyse ...................................
16.1.3 Checkliste für den Untersuchungsbereich
Softwareanalyse .............................................
Untersuchungsbereich Performanceüberblick ..............
707
708
708
710
711
15
1182.book Seite 16 Mittwoch, 4. März 2009 6:38 18
Inhalt
16.2.1
16.2.2
16.2.3
16.2.4
16.2.5
16.3
16.4
Allgemeine Systemlast ...................................
BW-Systemlast ..............................................
Analyse ABAP-Laufzeitfehler (Dumps) ...........
Analyse der Benutzeranzahl ...........................
Checkliste für den Untersuchungsbereich
Performanceüberblick ....................................
Untersuchungsbereich Hardwareanalyse ....................
16.3.1 Hardwareprofil ..............................................
16.3.2 CPU-Auslastung ............................................
16.3.3 Speicherauslastung ........................................
16.3.4 Datenbankperformance .................................
16.3.5 Datenbankwachstum .....................................
16.3.6 Checkliste für den Untersuchungsbereich
Hardware ......................................................
Untersuchungsbereich BW-Anwendungsanalyse ........
16.4.1 Analyse Datenverteilung in BW-InfoProvidern
und -Stammdaten .........................................
16.4.2 Analyse InfoProvider-Verteilung ....................
16.4.3 Analyse InfoCube-Design und
Dimensionentabellen ....................................
16.4.4 Analyse Line-Item-Dimensionen und hohe
Kardinalität ...................................................
16.4.5 Analyse der Query-Definitionen ....................
16.4.6 Analyse der Einstellungen zu BW-Statistiken ...
16.4.7 Analyse der Query-Nutzung ..........................
16.4.8 Analyse Upload-Prozesse ...............................
16.4.9 Checkliste für den Untersuchungsbereich
Anwendungsanalyse ......................................
711
712
714
715
717
718
718
719
720
721
722
724
726
727
728
733
735
736
739
739
740
741
Anhang ........................................................................... 745
A
16
Anhang ................................................................................
A.2
Migrationsdetails der Statistikdaten von SAP BW 3.x
nach SAP NetWeaver BW 7.0 – Mapping ...................
A.3
Mapping-Details der InfoObjects ...............................
A.4
DB-Views und transparente Tabellen der
BW Runtime Statistics ................................................
A.4.1 DB-View RSDDSTAT_OLAP: Statistikdaten
des Frontend- und Calculation-Layers ............
A.4.2 DB-View RSDDSTAT_DM: Statistikdaten
des Aggregation-Layers .................................
745
746
751
751
752
753
1182.book Seite 17 Mittwoch, 4. März 2009 6:38 18
Inhalt
A.4.3
A.5
A.6
A.7
A.8
A.9
Tabelle RSDDSTATHEADER – Kopftabelle
der BW-Statistiktabellen des Frontend-/
Calculation-Layers und Aggregation-Layers ....
A.4.4 Tabelle RSDDSTATINFO – Statistikdaten der
Navigationsschritte ........................................
A.4.5 Tabelle RSDDSTATDM – Statistikdaten des
Data-Managers im Aggregation-Layer ............
A.4.6 Tabelle RSDDSTATEVDATA – Statistikdaten
zu Zeit und Anzahl aller Events ......................
A.4.7 Tabelle RSDDSTATEVENTS – OLAP-StatistikEvents ............................................................
A.4.8 Tabelle RSDDSTATEVENTS – Übersicht der
OLAP-Statistik-Events für BW Suite ................
A.4.9 Tabelle RSDDSTATEVENTS – Übersicht der
OLAP-Statistik-Events für Analytical Engine ...
A.4.10 Tabelle RSDDSTATEVENTS – Übersicht der
OLAP-Statistik-Events für Data Warehousing ...
A.4.11 Tabelle RSPCLOGCHAIN: Statistikdaten der
Kreuztabelle Protokoll-ID eines Laufs einer
Prozesskette zur Prozessketten-ID ..................
A.4.12 Tabelle RSPCPROCESSLOG –
Statistikprotokolle der Prozesskettenläufe ......
A.4.13 Tabelle RSDDSTATDTP – WHM-Statistiken
der DTP-Prozesse ...........................................
A.4.14 Tabelle RSBKREQUEST – Statistikdaten der
DTP-Requests ................................................
A.4.15 Tabelle RSDDSTATWHM – Statistikdaten des
Data-Warehouse-Managements .....................
A.4.16 Tabelle RSMDATASTATE_EXT – Summationsstatistiken des Datenstatus in BW ..................
A.4.17 Tabelle RSDDSTATTREX – Statistikdaten für
Prozesse für TREX-Aggregate .........................
A.4.18 Tabelle RSDDSTATTREXSERV –
Detail-Statistik des TREX Servers ....................
ABAP-Programme in SAP NetWeaver BW ...................
Job-Präfixe in SAP NetWeaver BW .............................
Transaktionen in SAP NetWeaver BW .........................
BW-relevante Transaktionen im ERP-System ...............
SAP ERP- und NetWeaver BW-Systemtabellen ...........
A.9.1 Administration ...............................................
A.9.2 Modellierung .................................................
754
755
755
756
757
757
764
769
773
774
775
776
778
779
781
781
782
785
786
794
794
794
798
17
1182.book Seite 18 Mittwoch, 4. März 2009 6:38 18
Inhalt
B
A.10 Temporäre Tabellen in SAP NetWeaver BW ...............
A.11 SAP-Hinweise ............................................................
A.11.1 Indizes ..........................................................
A.11.2 DB-Einstellungen für SAP NetWeaver BW .....
A.11.3 Systemeinstellungen ......................................
A.11.4 Aggregate ......................................................
A.11.5 Sammelhinweise und FAQs ...........................
A.11.6 DB Connect ...................................................
Der Autor .............................................................................
800
802
802
802
803
803
804
804
805
Index .......................................................................................... 807
18
1182.book Seite 331 Mittwoch, 4. März 2009 6:38 18
Eine Voraussetzung für performante Lese- und Ladeprozesse sind
korrekte Datenbankstatistiken und Indizes. In diesem Kapitel finden Sie alle Informationen zu Grundlagen und Administration dieser Mittel. Es wird zunächst in die Grundlagen der Indizes und die
Indizierung von SAP NetWeaver BW-InfoProvidern eingeführt.
Zudem werden die Werkzeuge zur Analyse korrekter Indizes und
Datenbankstatistiken sowie ihre Administration erklärt.
9
Indizes und DB-Statistiken
Indizes und Datenbankstatistiken sind ein mächtiges Performancemittel,
da sie die Suche nach Daten in einer Datenbank unterstützen. Ohne diese
Mittel sind performante Lese- und Ladeprozesse bei Zugriff auf große
Datenmengen nahezu unmöglich. Der Analyse und Administration von
Indizes und Datenbankstatistiken kommt deshalb in der Performanceoptimierung von BW-Anwendungen eine besondere Bedeutung zu.
DB-Statistiken und Indizes einer Datenbank sind vergleichbar mit einem
Reise-Routenplan. Die Ausgangssituation ist folgende: Der anzufahrende
Zielort ist bekannt – um den Zielort zu erreichen, können aber verschiedene Routen gewählt werden: kürzeste Route, aber eventuell nicht die
schnellste; schnellste Route, aber wahrscheinlich mit einem weiteren
Weg. Mit der Abfrage von Daten in einem relationalen Datenbanksystem
ist es ähnlich.
Die Abfragesprache SQL, auf der alle Queries auf relationalen Datenzielen
in SAP NetWeaver BW beruhen, stellt die mittels einer Query angeforderten Daten zusammen. Insofern sind für das SQL-Statement die Datenziele
(im übertragenen Sinne die Reiseziele zu verschiedenen Datenobjekten)
bekannt. Ein SQL-Statement enthält aber keine Informationen darüber,
über welche »Route« die Datensuche und -Zusammenstellung am günstigsten erfolgt, um die schnellste Antwortzeit (im übertragenen Sinne also die
kürzeste Reisedauer) zu erreichen. Ein Großteil der Abfragezeit in einer
Datenbank wird nicht für das Lesen der Daten benötigt, sondern für die
Suche. Sind z.B. in einer Datenbanktabelle mit 100.000 Datensätzen nur
100 Datensätze (also nur ein Promille) relevant für die vorgegebene Selek-
331
1182.book Seite 332 Mittwoch, 4. März 2009 6:38 18
9
Indizes und DB-Statistiken
tion, dann dauert die Suche nach den richtigen Datensätzen um ein Vielfaches länger als der eigentliche Lesevorgang. Wenn die Datenbank jedoch
wüsste, wo die 100 gesuchten Datensätze liegen, würde der Lesevorgang
um ein Vielfaches beschleunigt werden. Eine solche Suchhilfe sind Indizes. Sie sind ergänzende Datenstrukturen, mit deren Hilfe die Inhalte von
Datenbanktabellen nach Ordnungskriterien katalogisiert werden. Das
Datenbanksystem erkennt anhand eines Index, wo die nachgefragten
Datensätze einer Tabelle liegen.
9.1
Grundlagen der DB-Speicherverwaltung
Bei der Erläuterung der Grundlagen zu rationalen Datenbanksystemen,
Indizes und Ausführungsplänen sollen zunächst einige Begriffe der Speicherverwaltung in Datenbanken erklärt werden, deren Verständnis nicht
immer vorausgesetzt werden kann.
Logische und
physische
Ebene
Bei der relationalen Speicherverwaltung in Datenbanken sind zwei Ebenen zu unterscheiden: Die logische und die physische Ebene. Die logische
Ebene umfasst Objekte, die üblicherweise mit SQL angesprochen werden
können. Hierzu zählen z.B. Tabellen und Indizes. Diese Objekte werden
in der physischen Ebene in Datenstrukturen abgelegt; hierzu zählen u.a.:
왘
Tablespaces
왘
Datendateien (Data Files)
왘
Segmente
왘
Extents
왘
Blöcke
Zudem gibt es weitere physische Objekte wie z.B. Control Files und RedoLog-Files, die nicht der Ablage von Daten dienen, sondern der Systemverwaltung.
Die physischen Objekte bilden eine hierarchische Ordnung:
Tablespaces
Eine Datenbank besteht aus mehreren Tablespaces. Ein Tablespace ist ein
vordefinierter Speicherort, in den Tabellen, Indizes und andere Datenobjekte geschrieben werden. Ein Tablespace enthält eine oder mehrere
Datendateien. Eine Datendatei ist eine physikalische Struktur, in der Tabellen und Indizes abgelegt werden. Tabellen und Indizes sind in sogenann-
332
1182.book Seite 333 Mittwoch, 4. März 2009 6:38 18
Grundlagen der DB-Speicherverwaltung
ten Segmenten der Datenbank eingeordnet.1 Dabei kann ein Segment
(Objekt) auch in mehreren Datendateien enthalten sein. Segmente sind
logisch einem Tablespace zugeordnet und werden physisch in Dateien
gespeichert. Abbildung 9.1 zeigt den hierarchischen Aufbau.
Tabelle
Tabelle
Tabelle
Tabelle
Objekte
(Segmente)
Index
Index
Index
Index
Index
Index
Index
Index
Index
Datenbankdatei
Tablespace
Abbildung 9.1 Hierarchischer Aufbau Datenbankobjekte
Eine Datendatei ist in mehrere Extents unterteilt. Ein Extent ist Teil eines
Segments und besteht aus diskreten Datenbankblöcken fester Größe (z.B.
8 KB). Ein oder mehrere Extents bilden ein Segment (siehe Abbildung 9.2).
8KB
8KB
8KB
8KB
8KB
8KB
8KB
8KB
8KB
8KB
8KB
8KB
8KB
8KB
8KB
8KB
8KB
8KB
8KB
8KB
8KB
8KB
8KB
8KB
8KB
8KB
8KB
8KB
8KB
8KB
Extent: 160 KB
Extent: 80 KB
Segment: 240 KB
Abbildung 9.2 Segmente und Extents
1 Das Datenbanksystem Oracle 10g besteht z.B. aus folgenden elf Segmenten: Table,
Table Partition, Index, Index Partition, Cluster, Rollback, Deferred Rollback, Temporary, Cache, Lobsegment, Lobindex.
333
Extents
9.1
1182.book Seite 334 Mittwoch, 4. März 2009 6:38 18
9
Indizes und DB-Statistiken
9.2
Datenbankoptimierer
Grundlagen zu Indizes und Ausführungsplänen
Um die günstigste Suchstrategie für eine Datenbankabfrage zu finden, verfügt das Datenbanksystem über den sogenannten Datenbankoptimierer.
Der Datenbankoptimierer ist Bestandteil des Datenbankprogramms und
entscheidet, über welche Zugriffsroute die Daten zusammengestellt werden. Die Zugriffsroute wird im Datenbanksystem als Ausführungsplan
bezeichnet und wird vom Datenbankoptimierer erstellt. Um die Arbeitsweise des Optimierers zu verstehen, werden in den folgenden Ausführungen zunächst einige Grundlagen der Datenverwaltung und -organisation
in relationalen Datenbanksystemen vermittelt.
9.2.1
Ein Einführungsbeispiel
Ein stark vereinfachtes, aber praxisbezogenes Beispiel soll die Grundlagen
der Datenorganisation in einem relationalen Datenbanksystem beschreiben.
In einer Datenbank sei eine Tabelle mit Mitarbeiterinformationen der
angelegt, deren Struktur in Abbildung 9.3 zu sehen ist.
Name
Name
Becker
Becker
...
...
Schroeder
Schroeder
...
...
Kessler
Kessler
...
...
Ansorge
Ansorge
...
...
Schroeder
Schroeder
...
...
Vorname
Vorname
Harald
Harald
Abteilung
Abteilung
Controlling
Controlling
Standort
Standort
München
München
Straße
Telefon-Nr.
Straße
Telefon-Nr.
Maximilianstr.
Maximilian Str. 089-2476986
089-2476986
Thomas
Thomas
Beratung
Beratung
Hamburg
Hamburg
Lübecker
Lübecker Str.
Str.
040-8790657
040-8790657
Anja
Anja
Controlling
Controlling
Hamburg
Hamburg
Lübecker
Lübecker Str.
Str.
040-8790637
040-8790637
Berthold
Berthold
Beratung
Beratung
Münster
Münster
Hammer
Hammer Str.
Str.
0251-456539
0251-456539
Elisabeth
Elisabeth
Facility
Münster
Facility Mngm.
Mngm. Münster
Hammer
Hammer Str.
Str.
0251-456566
0251-456566
Abbildung 9.3 Beispieltabelle »Mitarbeiter«
Die Einträge der Tabelle sind unsortiert, da relationale Datenbanksysteme
in der Regel die Daten nicht sortiert abspeichern: Neu hinzukommende
Daten werden an das Ende der Liste oder an Stellen eingefügt, die gerade
frei sind. Damit Daten in einer Datenbanktabelle auffindbar sind, werden
alle Zeilen der Tabelle mit einer sogenannten Row-ID gekennzeichnet (in
der Beispieltabelle in Abbildung 9.3 nicht dargestellt). Diese Row-ID identifiziert jeden Datensatz in einer Tabelle eindeutig und teilt der Datenbank
den genauen Standort der Zeile mit. Wollte man nun in der Tabelle Mitarbeiter in Abbildung 9.3 einen bestimmten Mitarbeiter aus der Datenbank
selektieren, müsste die Tabelle bei jeder Abfrage Satz für Satz sequentiell
334
1182.book Seite 335 Mittwoch, 4. März 2009 6:38 18
Grundlagen zu Indizes und Ausführungsplänen
9.2
gelesen werden. Dies wäre ein sehr unperformanter Lesezugriff, der je
nach Größe der Tabelle zu langen Lesezeiten führen kann, da ein Großteil
der erforderlichen Zeit für die Suche des Datensatzes erforderlich wäre.
Damit dies nicht geschieht, existiert zu der unsortierten Tabelle ein Primärindex, über den die Suche effizient gestaltet werden kann. Ein Index ist
eine Datenbankstruktur, die eine sortierte Werteliste mit Zeigern zu den
Datensätzen enthält und der Datenbank zum schnellen Auffinden einer
Zeile in einer Tabelle verhilft. Indizes unterstützen verschiedene Datenbankoperation. Hierzu zählen z.B. Datenbankabfragen der Form
왘
SELECT ... WHERE <Tabellenspalte> = <Wert>
왘
UPDATE ... WHERE <Tabellenspalte> = <Wert>
왘
DELETE ... WHERE <Tabellenspalte> = <Wert>
왘
Table Joins (<Tabelle1.Spalte1> = <Tabelle2.Spalte2>)
Primärindex
In der Beispieltabelle Mitarbeiter wäre der Primärindex eine alphabetisch
nach Namen und Vornamen sortierte Liste, bei der zu jedem Namen und
Vornamen die genaue Position des Datensatzes in der Tabelle gespeichert
ist. Damit die Daten in der Tabelle auffindbar sind, sind alle Zeilen mit
einer Row-ID eindeutig gekennzeichnet. In diesem Beispiel sind Name
und Vorname die Felder des Index, und die Positionsnummer ist die RowID.
Primärindizes sind in ERP-Tabellen immer als Unique-Index angelegt. Das
heißt, dass zu jeder Kombination der Indexfelder ein eindeutiger Tabelleneintrag existiert. Für das Beispiel der Tabelle Mitarbeiter soll diese Anforderung vernachlässigt werden, da natürlich in der Mitarbeiter-Tabelle
mehrere Einträge mit gleichem Namen und Vornamen existieren könnten. Die Faktentabelle eines SAP NetWeaver BW-Standard-InfoCube verfügt über keinen Unique-Index, da ihre Dimensionenschlüssel-IDs als
Fremdschlüssel der Dimensionentabellen über einen sogenannten PIndex indiziert sind, der non-unique ist (siehe auch Abschnitt 9.4).
Unique-Index
Wollte man in einer nächsten Abfrage alle Mitarbeiter des Standorts Hamburg selektieren, kann der Primärindex für eine schnelle Suche vom
Datenbanksystem nicht verwendet werden, da das Feld Standort nicht im
Index enthalten ist. Um dennoch die Tabelle nicht sequentiell Satz für Satz
lesen zu müssen, kann die Suchabfrage durch einen sogenannten Sekundärindex unterstützt werden. Ein Sekundärindex enthält ein oder mehrere
Tabellenfelder sowie einen Verweis auf die Row-ID bzw. den Primärschlüssel der Tabelle. In der Beispieltabelle Mitarbeiter wäre ein Sekun-
Sekundärindex
335
1182.book Seite 336 Mittwoch, 4. März 2009 6:38 18
9
Indizes und DB-Statistiken
därindex auf dem Feld »Standort« geeignet, die Suchabfrage nach allen
Mitarbeitern am Standort Hamburg zu unterstützen. Sekundärindizes sind
in der Regel nicht unique, das heißt, zu einem Indexeintrag können mehrere Tabelleneinträge existieren.
Ausführungsplan
In dem Beispiel der Tabelle Mitarbeiter sollen in einer nächsten Abfrage
alle Mitarbeiter mit Namen »Schröder« am Standort »Hamburg« selektiert
werden. Die Datenbank könnte diese Abfragen mit verschiedenen
Suchstrategien umsetzen:
1. sequentielles Durchsuchen der gesamten Tabelle
2. Suche über den Primärindex über die Felder Name und Vorname
3. Suche über den Sekundärindex über das Feld Standort
Welche Suchstrategie verwendet wird, entscheidet der Datenbankoptimierer. Der gewählte Zugriffspfad wird als Ausführungsplan bezeichnet. Der
Ausführungsplan (auch Execution Plan genannt) einer Query kann im BWSystem im Query-Monitor (Transaktion RSRT) über die Funktion Ausführen + Debuggen 폷 Zeige Ausführungsplan eingesehen werden (siehe
Abbildung 9.4).
Abbildung 9.4 Aufruf des Ausführungsplans einer Query im Query-Monitor
336
1182.book Seite 337 Mittwoch, 4. März 2009 6:38 18
Grundlagen zu Indizes und Ausführungsplänen
9.2
Um einen Ausführungsplan lesen zu können, sollen zunächst verschiedene Zugriffsoptionen näher erläutert werden, die Sie in einem Ausführungsplan finden können. Der in Abbildung 9.4 dargestellte Ausführungsplan beruht auf dem Datenbanksystem Oracle, die hier genannten Begriffe
der Datenbankoperationen können in anderen Datenbanksystemen verschieden sein.
Bei der Analyse des Ausführungsplans soll unterschieden werden zwischen Tabellenzugriffsalgorithmen, also Methoden für den Zugriff auf
Tabellen und Indizes für das Lesen von Daten, und Join-Algorithmen, also
Methoden für die Verknüpfung von Daten in Tabellen. Die hier verwendeten Begriffe sind zum besseren Verständnis allgemein gehalten, in
Ihrem SAP NetWeaver BW-System können die Begriffe je nach der
zugrundeliegenden Datenbank hiervon abweichen.
9.2.2
Tabellen-/Indexzugriffsalgorithmen
Tabellenzugriffsalgorithmen beschreiben Leseprozesse der Datenbank
zum Auffinden der gesuchten Daten in den Datenbanktabellen. Die häufigsten Zugriffsoperationen sind hierbei in der allgemeinen Form der
Table Scan und der Index Scan. Wie die Bezeichnungen schon vermuten
lassen, unterscheiden sich diese beiden Formen des Datenzugriffs bezüglich des Datenobjektes, aus dem zuerst die Daten gelesen werden: einem
Index oder einer Tabelle. Diese beiden Grundformen des Datenzugriffs
werden in den folgenden Ausführungen näher spezifiziert.
Eine besondere Form des Table Scans ist der Full Table Scan. Beim Full
Table Scan muss die gesamte Datenbanktabelle sequentiell durchsucht
werden. Der Full Table Scan wird deshalb auch als sequentieller Table
Scan bezeichnet. Diese Form des Tabellenzugriffs muss vom Datenbanksystem immer dann ausgeführt werden, wenn für die Suche kein Index
verwendet werden kann, weil die gewählten Suchfelder nicht in einem
Index enthalten sind. In der Tabelle Mitarbeiter könnte eine SQL-Abfrage
wie folgt aussehen:
SELECT * FROM TABLE Mitarbeiter
WHERE Abteilung = 'Controlling'.
Für das Feld Abteilung existiert in der Tabelle Mitarbeiter kein Index, die
Suche kann also nicht durch einen Index unterstützt werden, und die
Tabelle muss Satz für Satz gelesen werden. Ein Full Table Scan ist für große
Tabellen aufgrund der langen Suchzeiten sehr ungünstig. Für kleine Tabel-
337
Full Table Scan
1182.book Seite 338 Mittwoch, 4. März 2009 6:38 18
9
Indizes und DB-Statistiken
len kann der Full Table Scan aber auch günstiger sein als der Datenzugriff
über einen Index. Die Entscheidung über die beste Suchstrategie fällt der
Datenbankoptimierer.
ROW-ID Scan
Der ROW-ID Scan liest die Tabellenzeiger einer Tabelle. Die ROW-ID enthält die Datendatei, den Block und die Stelle im Block, an der die gesuchte
Datenzeile zu finden ist. Die ROWID-Funktion gibt den Zeilenbezeichner in
einer Tabelle zurück, der der angegebenen Datenkorrelation entspricht.
Dieser Algorithmus wird benutzt, um Zeilen in einer Tabelle anhand eines
Vergleichsausdrucks mit Hilfe der Funktion ROWID effizient zu suchen.
Index Unique
Scan
Ein Index Scan verwendet einen Index, um die gesuchten Daten zu finden.
Der Zugriff erfolgt hierbei also zunächst nicht auf die Datenbanktabelle,
sondern auf eine Indextabelle. Indizes bieten ein optimiertes Suchverfahren zum Auffinden von wenigen Daten in großen Tabellen. Ein Index Unique Scan wird immer dann ausgeführt, wenn alle Felder des Primärindex
in der WHERE-Klausel der SQL-Anweisung mit einer Gleichbedingung spezifiziert sind. Ein Beispiel für die Tabelle Mitarbeiter könnte wie folgt aussehen:
SELECT * FROM TABLE Mitarbeiter
WHERE Name = 'Schroeder' AND Vorname = 'Thomas' .
Da der Primärindex immer ein Unique-Index ist, liefert der Index Unique
Scan höchstens einen Datensatz zurück.
Index Range
Scan
Bei einem Index Range Scan existiert zwar für die Suche ein Index, die Einschränkung der Suche in der WHERE-Klausel ist aber nicht eindeutig.
In der SQL-Anweisung
SELECT * FROM Mitarbeiter WHERE Name = 'Schroeder'.
kann zwar der Primärindex zur Suche benutzt werden, doch spezifiziert
die WHERE-Klausel keinen eindeutigen Datensatz im Primärindex, sondern
alle Datensätze mit dem Namen »Schroeder« (genauer gesagt, alle Row-IDs
der Datensätze mit dem Namen »Schroeder«). Da dieser Indexbereich Satz
für Satz gelesen werden muss, spricht man von einem Index Range Scan.
Über einen Sekundärindex wird immer ein Index Range Scan ausgeführt,
da er nicht unique ist. Ein Index Range Scan muss immer dann ausgeführt
werden, wenn nicht alle Felder des Index (hier Name und Vorname) in der
WHERE-Bedingung mit = spezifiziert sind. Der Datenbankoptimierer muss
338
1182.book Seite 339 Mittwoch, 4. März 2009 6:38 18
Grundlagen zu Indizes und Ausführungsplänen
9.2
dann einen Indexbereich durchsuchen, um die Datensätze der Tabelle zu
ermitteln.
Ein bei der Suche von Daten in Tabellen einer Datenbank benutzter Algorithmus ist die binäre Suche (binary search). Die binäre Suche funktioniert
ähnlich wie das Raten von Zahlen: In einer sortierten Werteliste wird der
gesuchte Wert zunächst in der Mitte der Liste gesucht. Stimmt der
zunächst gefundene Wert mit dem gesuchten Wert nicht überein, wird je
nachdem, ob der gesuchte Wert größer oder kleiner als der gefundene
Wert ist, vor oder hinter dem gefundenen Element in der gleichen Weise
weitergesucht. Die Suche wird beendet, wenn das gesuchte Element
gefunden wurde oder wenn es keinen restlichen Bereich mehr gibt, in
dem gesucht werden könnte.
1
2
3
4
7
12
14
35
37
41
68
72
2
4
78
96
3
105 113
Abbildung 9.5 Binäre Suche
Der Suchalgorithmus binäre Suche ist in Abbildung 9.5 illustriert. Gesucht
wird die Zahl 96. Der Suchalgorithmus beginnt zunächst in der Mitte der
Liste mit der Suche und findet den Wert 37 �. Der gesuchte Wert ist größer als der gefundene, die Suche wird deshalb in der Mitte des rechten
Teils der Liste fortgeführt; es wird der Wert 78 gefunden �. Der gesuchte
Wert ist größer als der gefundene, die Suche wird deshalb weiter fortgesetzt in der Mitte des verbleibenden rechten Teils der Liste; es wird der
Wert 105 gefunden �. Der gesuchte Wert ist kleiner als der gefundene,
die Suche wird deshalb im linken Bereich fortgesetzt; es wird der Wert 96
gefunden �. Der gesuchte Wert ist gefunden, die Suche wird beendet. Das
Beispiel in Abbildung 9.5 zeigt, dass die binäre Suche ein sehr effizienter
Suchalgorithmus ist, da nur vier Lesezugriffe benötigt werden, um den
gesuchten Wert zu finden. Würde die sortierte Liste Element für Element
der Reihe nach durchsucht, wären 13 Lesezugriffe nötig.
9.2.3
Join-Algorithmen
Der Join-Algorithmus verknüpft Datenzeilen von Datenobjekten entsprechend einem Vergleichsoperator und bildet darüber eine Ergebnismenge.
In dem Datenbanksystem, das SAP NetWeaver BW unterliegt, sind ver-
339
Binäre Suche
1182.book Seite 340 Mittwoch, 4. März 2009 6:38 18
9
Indizes und DB-Statistiken
schiedene Join-Algorithmen implementiert, die verschiedene Eigenschaften haben und durch den Datenbankoptimierer der jeweiligen Abfrage
entsprechend ausgewählt werden. Die drei häufigsten Typen der JoinOperation sind Nested-Loop Join, Merge Join und Hash Join.
Nested-Loop
Join
Der Nested-Loop Join ist der einfachste Join-Algorithmus. Er durchsucht
für jeden Datensatz der ersten Ergebnismenge die gesamte zweite Ergebnismenge nach Übereinstimmungen aufgrund der Join-Bedingung. In der
Regel wird über einen Index auf die Datensätze der ersten Ergebnismenge
zugegriffen, um schnellere Suchzeiten zu bewirken. Für den Nested-Loop
Join existieren weitere Varianten, wie z.B. der Left Outer oder der Full
Outer Join. Full Outer Joins sind in der Regel sehr teuer und zeitintensiv
in der Ausführung, weshalb der Datenbankoptimierer diese Join-Operationen nur in wenigen Fällen auswählen wird, wenn keine andere JoinOperation das Ergebnis kostengünstiger bereitstellen kann.
Merge Join
Ein Merge Join verknüpft gleich geordnete Ergebnismengen. Die JoinBedingung muss mindestens ein Gleichheitsprädikat enthalten, sonst kann
der Optimierer diese Join-Operation nicht auswählen. Der Merge Join ist
sehr effizient bei etwa gleich großen, bereits vorsortierten Ergebnismengen. Auch für den Merge Join gibt es Varianten, die den Left Outer Join
oder den Full Outer Join unterstützen. Aufgrund der Sortierung der
Ergebnismengen ist der Merge Join meist erheblich effizienter als der Nested-Loop Join.
Hash Join
Der Hash Join ist die vielseitigste Join-Methode. Der Hash-Join-Algorithmus liest die kleinere Ergebnismenge in den Speicher und berechnet für
das Join-Kriterium eine Tabelle mit Hash-Schlüsseln, die einen schnelleren
Zugriff auf die Ergebnismenge ermöglichen als der Indexzugriff. Dann
durchsucht der Hash-Algorithmus die größere Ergebnismenge und prüft
die speicherresidente Hash-Tabelle auf Übereinstimmungen. Reicht der
Speicher für die Hash-Tabelle nicht aus, werden die Ergebnismengen in
Partitionen aufgeteilt, wobei die Join-Operation für jede Partition einzeln
ausgeführt wird. Zudem kann der Hash-Join-Algorithmus zu einer indexbasierten Join-Strategie wechseln, wenn nicht genügend Cache-Speicher
vorhanden ist, um alle Zeilen der Ergebnismenge aufzunehmen.
Eine Übersicht mit weiteren Operationstypen finden Sie auch in Tabelle
9.3 in Abschnitt 9.5 bei der Erklärung des Star-Join-Ausführungsplans.
340
1182.book Seite 341 Mittwoch, 4. März 2009 6:38 18
Strukturtypen von Indizes
9.3
Strukturtypen von Indizes
Im BW-System werden zwei Typen von Indizes unterschieden: Der Tabellen-Index und der Bitmap-Index.
Der Tabellen-Index speichert die indizierten Wertefelder einer Tabellenzeile zusammen mit dem physischen Standort der Zeile (Row-ID). Dabei
kann der Index auf eine oder mehrere Spalten angelegt sein. Die Indexeinträge werden in der sogenannten B-Tree-Struktur gespeichert. Der B-Tree
ist eine Indexstruktur, die sich von binären Bäumen (Binary Tree) ableiten
lässt und kurze Zugriffspfade auf die Schlüsselwerte unter minimalen I/OOperationen sicherstellt.
Im Binary Tree enthält jeder Knoten einen Werteintrag, dem genau zwei
Knoten zugeordnet sind (deswegen auch »binär«, »zwei«), wobei der linke
Zeiger immer auf einen Knoten mit kleinerem Wert zeigt, der rechte Zeiger auf einen Knoten mit größerem Wert (siehe Abbildung 9.6).
Binary Tree
37
7
78
3
2
14
4
12
68
35
41
105
72
96
113
Abbildung 9.6 Binary Tree
Die Anzahl der Einträge pro Knoten wird als Ordnung bezeichnet. Ein
Binary Tree hat deshalb immer die Ordnung 2. Die Anzahl der Zugriffsoperationen, die benötigt wird, um den gesuchten Wert zu finden, wird
als Tiefe des Binary Trees bezeichnet.
Die B-Tree-Struktur ist eine generalisierte Form des Binary Trees, da sie
mehr als einen Werteintrag pro Knoten und damit auch mehr als zwei Zeiger pro Knoten enthalten darf. Ein Knoten in einem B-Tree der Ordnung
d kann bis zu 2d Werteinträge und 2d+1 Zeiger enthalten, wobei wenigstens d Elemente im Knoten enthalten sein müssen, damit jeder Knoten zu
50% belegt ist.
Abbildung 9.7 zeigt einen B-Tree-Index der Ordnung 2 mit vier Werten
pro Knoten und fünf Zeigern.
341
B-Tree
9.3
1182.book Seite 342 Mittwoch, 4. März 2009 6:38 18
9
Indizes und DB-Statistiken
Block X
1
2
3
4
Zeiger zum Datensatz
Zeiger zum nächsten Block
Block 4
Block 1
2
3
4
12
113
7
Block 3
Block 2
68
14
35
37
72
78
96
105
41
Abbildung 9.7 B-Tree-Index
In einer B-Tree-Struktur haben alle Pfade vom Wurzelknoten bis zu den
Blättern die gleiche Länge, was auch als balancierte Struktur bezeichnet
wird. Die Werteinträge in den Knoten sind sortiert; jeder Knoten hat zwischen n und maximal 2n Einträge, der Wurzelknoten kann zwischen 1 und
2n Einträge haben. Die Suche von Werten im B-Tree-Index funktioniert
nach dem in Abbildung 9.5 beschriebenen Algorithmus der binären
Suche. Die Suchkosten in einem B-Tree-Index sind günstiger als in einem
Binary Tree, da der B-Tree vollständig balanciert ist und mehr als zwei
Werteinträge je Knoten aufnehmen kann, so dass weniger Knoten durchsucht werden müssen.
Einfügen
neuer Werte
Das Einfügen bzw. Löschen von Elementen im B-Tree-Index muss wieder
einen balancierten Baum hinterlassen. Wird ein neues Element hinzugefügt, wird zunächst geprüft, ob das Element schon im Baum vorhanden ist.
Für den einzufügenden Datensatz wird anschließend der richtige Block
gesucht und der Wert in den Block geschrieben. Ist der Block schon voll,
wird der Inhalt in zwei neue Blöcke aufgeteilt (gesplittet), wobei die kleineren Einträge mit dem neuen Wert in den linken Block, der nächsthöhere
Wert als Knoten in den übergeordneten Block und die restlichen Werte in
den rechten Block geschrieben werden. Wenn der übergeordnete VaterBlock auch schon voll ist, muss der Block erneut gesplittet werden. Erst
wenn der Splitting-Prozess bis zum Wurzelknoten fortgesetzt werden
muss, erhöht sich die Tiefe des Baums.
342
1182.book Seite 343 Mittwoch, 4. März 2009 6:38 18
Strukturtypen von Indizes
9.3
Die Funktionsweise des Einfügens neuer Werte zeigt Abbildung 9.8. In
Block 2 soll der Wert 15 neu hinzugefügt werden. Da Block 2 zuvor vollständig gefüllt war (siehe Abbildung 9.7), muss der Block gesplittet werden, wobei die Elemente bis zum neuen Wert in Block 2 verbleiben (Elemente 14 und 15), der nächsthöhere Wert 35 in den übergeordneten
Block-4-Knoten eingefügt wird und die restlichen Elemente 37 und 41 aus
Block 2 dem neuen Block 5 zugeordnet werden.
Änderung Block 4
12
35
68
113
Block 3
72
78
96
Block 4
Block 1
2
3
4
7
105
Neu eingefügter Wert
Block 2
14
15
Block 2
37
41
Split Block 2
Block X
1
2
3
4
Zeiger zum Datensatz
Zeiger zum nächsten Block
Abbildung 9.8 B-Tree-Index – Einfügen neuer Werte
Eine spezielle Form des B-Tree-Index ist der B*-Tree-Index, der in den
meisten kommerziellen relationalen Datenbanksystemen verwendet wird.
Der B*-Tree-Index hat die Eigenschaft, dass alle Knoten zu zwei Dritteln
gefüllt sein müssen. Es werden dadurch aufgrund der geringeren Baumtiefe eine höhere Speicherauslastung und eine schnellere Suche gegenüber
dem Standard-B-Tree-Index erreicht. Allerdings sind die Kosten für die
Reorganisation der Daten (Löschen und Einfügen) aufgrund des Füllgrades
von 66% teurer als beim Standard-B-Tree-Index.
343
B*-Tree-Index
1182.book Seite 344 Mittwoch, 4. März 2009 6:38 18
9
Indizes und DB-Statistiken
Ein normaler B*-Tree-Index ist ein aus Blöcken aufgebauter Baum mit ein
bis fünf Ebenen. Die oberste Ebene besteht aus einem einzigen Block, der
als Root-Block bezeichnet wird und der Ausgangspunkt für jeden Indexzugriff ist. Die unterste Ebene besteht aus einer potentiell sehr großen
Anzahl von Blöcken, die Leaf-Blöcke genannt werden und von links nach
rechts die eigentlichen Daten (Werte der indizierten Spalten und Row-ID
für den Zugriff auf den zugehörigen Tabelleneintrag) in sortierter Reihenfolge enthalten. Diese Einträge werden als Leaf-Rows bezeichnet. Zu den
Leaf-Rows werden auch frühere Einträge des Index gezählt, die nicht physikalisch aus dem Index entfernt, sondern nur mit einem Flag als gelöscht
markiert werden. Diese spezielle Art von Leaf-Rows wird Deleted LeafRows genannt.
Zwischen Root- und Leaf-Blöcken kann es in Abhängigkeit von der Indexgröße noch weitere Indexebenen mit sogenannten Branch-Blöcken geben,
die Steuerdaten zum schnellen Auffinden der relevanten Daten im Index
enthalten. Besteht ein Index aus nur einer Ebene, ist der Root-Block gleichzeitig ein Leaf-Block und enthält die eigentlichen Daten. Besteht ein Index
aus mehreren Ebenen, ist der Root-Block vergleichbar mit den Branch-Blöcken und enthält Informationen zur Navigation im Index.
Bitmap-Index
Der Bitmap-Index ist besonders hilfreich für Werte mit geringer Kardinalität, also wenigen möglichen Ausprägungen, wie z.B. das Merkmal
Geschlecht, das zwei Ausprägungen (m/w) annehmen kann. Solche Werteausprägungen sind nicht sehr selektiv; Bitmap-Indizes beschleunigen
deshalb Suchvorgänge, bei denen nicht-selektive Spalten zur Reduzierung
von Zeilen aus der Menge der zurückgegebenen Zeilen verwendet werden. Für Data-Warehouse-Applikationen wird der Bitmap-Index häufig
verwendet, um vor allem komplexe und unselektive Abfragen beschleunigen zu können.
In einem Bitmap-Index wird für jede Ausprägung ein Bitmap-Feld erzeugt,
das den Wert »1« erhält, wenn das indizierte Merkmal den Wert der Ausprägung besitzt; sonst erhält das Bitmap-Feld den Wert »0«. Wenn ein
Bitmap-Index viele Einsen enthält, spricht man von einer dichten Belegung des Bitmap-Index. Beim Attribut Geschlecht wäre der Belegungsgrad
50%.
Das Beispiel einer Tabelle mit Feiertagen – dargestellt in Abbildung 9.9 –
enthält zwei Bitmap-Indizes: einen Bitmap-Index über das Attribut Gesetzlicher Feiertag (ja/nein) und einen Bitmap-Index über den Monat (Monat
1 bis 12).
344
1182.book Seite 345 Mittwoch, 4. März 2009 6:38 18
Strukturtypen von Indizes
## Feiertag
F
Feiertag
e ie rta g
11 Neujahr
Neujahr
22 Heilige
Dre
r i Könige
Könige
Heilige Drei
Drei
33 Valentinstag
Valentinstag
44 Rosenmontag
Rosenmontag
55 Fastnacht
Fastnacht
66 Aschermittwoch
Aschermittwoch
77 Karfreitag
Karf
rfreitag
Karfreitag
88 Ostern
Ostern
99 Ostermontag
Ostermontag
10
10 Maifeiertag
Maife
f iert
r ag
Maifeiertag
11
11 Muttertag
Muttert
r ag
Muttertag
12
Christi
Himmelfahrt
12 Christi Himmelfa
f hrt
r
Himmelfahrt
13
13 Pfingstsonntag
Pfi
f ngstsonntag
Pfingstsonntag
14
14 Pfingstmontag
Pfi
f ngstmontag
Pfingstmontag
15
15 Fronleichnam
Fro
r nleichnam
Fronleichnam
16
16 Friedensfest
Friedensfe
f st
Friedensfest
17
17 Mariä
Mariä Himmelfahrt
Himmelfa
f hrt
r
Himmelfahrt
18
Erntedankfest
18 Erntedankfest
Erntedankfe
f st
19
19 Tag
T g der
Ta
Tag
der Deutschen
Deutschen Einheit
Einheit
20
2
0 Halloween
Halloween
20
21
2
1 Reformationstag
Refo
f rmationstag
21
Reformationstag
22
2
2 Allerheiligen
Allerheiligen
22
23
2
3 Volkstrauertag
Volkstra
r uert
r ag
23
Volkstrauertag
24
2
4 BußBuß- und
und Bettag
Bettag
24
25
2
5 Totensonntag
T
To
tensonntag
25
Totensonntag
26
2
6 1.
1. Advent
Adve
v nt
26
Advent
27
2
7 Barbara
Barbara
r
27
28
2
8 Nikolaus
Nikolaus
28
29
2.
Advent
2
9 2. Advent
Adve
v nt
29
30
30 3.
3. Advent
Adve
v nt
Advent
31
31 4.
4. Advent
Adve
v nt
Advent
32
32 Heiligabend
Heiligabend
33
33 1.
1. Weihnachtstag
Weihnachtstag
34
34 2.
2. Weihnachtstag
Weihnachtstag
35
Silvester
3
5 Silve
v ster
35
Silvester
Gesetzlicher
Gesetzlicher
Ge se tz liche r Bitmap-Index
B
itm a p-IInde x Monat
Monat
M ona t
Bitmap-Index
Feiertag
jj
nn
Feiert
r ag
g (j/n)?
((j/n)?
j/n))?
Feiertag
jj
11
00
Januar
JJanuar
anuar
jj
11
00
Januar
Januar
nn
00
11
Februar
Februar
nn
00
11
Februar
Februar
nn
00
11
Februar
Februar
nn
00
11
März
März
r
jj
11
00
April
April
nn
00
11
April
April
jj
11
00
April
April
jj
11
00
Mai
Mai
nn
00
11
Mai
Mai
jj
11
00
Mai
Mai
jj
11
00
Juni
Juni
jj
11
00
Juni
Juni
jj
11
00
Juni
Juni
jj
11
00
August
August
jj
11
00
August
August
nn
00
11
Oktober
Oktober
jj
11
00
Oktober
Oktober
nn
00
11
Oktober
Oktober
jj
11
00
Oktober
Oktober
jj
11
00
November
Nove
v mber
November
nn
00
11
November
Nove
v mber
November
jj
11
00
November
Nove
v mber
November
nn
00
11
November
Nove
v mber
November
nn
00
11
Dezember
Dezember
nn
00
11
Dezember
Dezember
nn
00
11
Dezember
Dezember
nn
00
11
Dezember
Dezember
nn
00
11
Dezember
Dezember
nn
00
11
Dezember
Dezember
nn
00
11
Dezember
Dezember
jj
11
00
Dezember
Dezember
jj
11
00
Dezember
Dezember
nn
00
11
Dezember
Dezember
11
11
11
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
22
00
00
11
11
11
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
33
00
00
00
00
00
11
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
Bitmap-Index
B
itm a p-IInde x
Bitmap-Index
44 55 66 77 88
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
11 00 00 00 00
11 00 00 00 00
11 00 00 00 00
00 11 00 00 00
00 11 00 00 00
00 11 00 00 00
00 00 11 00 00
00 00 11 00 00
00 00 11 00 00
00 00 00 00 11
00 00 00 00 11
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
00 00 00 00 00
99 10
10 11
11 12
12
2
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 11 00 00
00 11 00 00
00 11 00 00
00 11 00 00
00 00 11 00
00 00 11 00
00 00 11 00
00 00 11 00
00 00 00 11
00 00 00 11
00 00 00 11
00 00 00 11
00 00 00 11
00 00 00 11
00 00 00 11
00 00 00 11
00 00 00 11
00 00 00 11
Abbildung 9.9 Bitmap-Index mit Attributen »Gesetzlicher Feiertag (j/n)?« und »Monat«
Die Abbildung 9.9 zeigt, dass für die folgende Abfrage der Bitmap-Index
auf Feldern mit wenigen Merkmalsausprägungen sehr vorteilhaft ist:
SELECT * FROM TABLE
WHERE
'Gesetzl. Feiertag' = 'J' AND
'Monat'
= 'Oktober'
Bitmap-Indizes ermöglichen eine schnelle Leseperformance bei geringem
Speicherbedarf (ca. 5 bis 10% des Speicherbedarfs von normalen Indizes,
da die binäre Struktur sehr gut vom Datenbanksystem komprimiert werden kann), haben aber hohe Performancekosten bei der Aktualisierung.
Bitmap-Indizes sollten nur auf Spalten mit geringer Kardinalität (nichtselektive Spalten) eingesetzt werden, die in WHERE-Bedingungen verwendet werden.
Tabelle 9.1 zeigt die Unterschiede zwischen B-Tree-Index und BitmapIndex im Vergleich:
345
9.3
1182.book Seite 346 Mittwoch, 4. März 2009 6:38 18
9
Indizes und DB-Statistiken
B-Tree-Index
Bitmap-Index
Kardinalität
geeignet bei Attributen mit
hoher Kardinalität
geeignet bei Attributen mit
geringer Kardinalität
Anzahl in Tabellen
typischerweise ein Index pro mehrere Indizes pro Tabelle
Tabelle
Platzbedarf
Platzbedarf unabhängig von
Anzahl unterschiedlicher
Werte
Reorganisation
durch effiziente Algorithmen aufwendig bei INSERT und
geringere Kosten
DELETE
Zugriffsart
Single-Record-Zugriffe,
Schnittmengenbildung teuer
Platzbedarf abhängig von
Kardinalität des Attributs,
gewöhnlich aber geringer als
bei B-Tree
Multiple-Record-Zugriffe,
schnelle AND/OR-Verknüpfungen
Tabelle 9.1 Vergleich von B-Tree-Index und Bitmap-Index
Cluster-Index
Ein weiterer Index in SAP NetWeaver BW ist der Cluster-Index, der aber
nur für DB2 UDB-Datenbanksysteme (Unix, Windows und Linux) zum
Einsatz kommt. Dieses Datenbanksystem kann Zeilen auf physischen
Datenseiten in der Reihenfolge eines Index sortieren. Der Cluster-Index ist
ein zusammengesetzter Index auf den Dimensionenschlüsselspalten der
Faktentabelle und wird automatisch angelegt. Die Reihenfolge wird dabei
bestimmt durch das InfoCube-Design und durch die Reihenfolge der InfoCube-Dimensionen.
Durch das Clustering können die Datensätze in der Faktentabelle gemäß
der Sortierfolge des Index abgelegt werden. Datensätze mit denselben
Dimensionenschlüsseln können dadurch in gleichen Extents der Datenbank abgelegt werden. Die Anzahl der zu lesenden Extents kann dadurch
massiv verringert werden, da die Datensätze nicht über viele Extents verteilt sind. Ist ein relevanter Extent bereits voll, wird der Datensatz in einen
leeren Extent am Ende am Ende der Tabelle eingefügt. Durch ständige Einfüge- und Löschvorgänge degeneriert der Cluster-Index zunehmend,
wodurch die Sortierreihenfolge nicht immer gewährleistet ist. Der Pflegeaufwand des Index ist dementsprechend größer als beim B-Tree- oder
Bitmap-Index, da aber weniger physische Blöcke gelesen werden müssen,
ist der Datenbank-I/O meist günstiger.
346
1182.book Seite 347 Mittwoch, 4. März 2009 6:38 18
Indizierungsschema in SAP NetWeaver BW
9.4
9.4
Indizierungsschema in SAP NetWeaver BW
In diesem Abschnitt werden das Indizierungsschema in SAP NetWeaver
BW und die im System verwendeten Indextypen für folgende Datenprovider erläutert:
왘
Standard-InfoCubes
왘
Transaktionale InfoCubes
왘
Partitionierte InfoCubes
왘
DataStore-Objekte
왘
InfoObjects
Desweiteren lernen Sie die Analyse- und Optimierungsmöglichkeiten mit
Indizes kennen.
9.4.1
Indizierung bei Standard-InfoCubes
In SAP NetWeaver BW werden die Tabellen der Fakten und Dimensionen
eines InfoCubes bei der Modellierung automatisch indiziert und brauchen
gewöhnlich nicht selbst angelegt oder erweitert zu werden. Nur in Ausnahmefällen, z.B. bei besonders großen Datenvolumina, ist es ratsam,
weitere Indizes anzulegen, um die Performance für Ladeprozesse und
Lesezugriffe zu verbessern.
Das Indizierungsschema der Datenbanktabellen eines InfoCubes soll an
dem folgenden Beispiel des InfoCubes Materialverbräuche Ist (ZMVIST)
erläutert werden.
InfoCubes in BW sind nach dem sogenannten Star-Schema aufgebaut. Das
Star-Schema hat seinen Namen aufgrund der sternförmigen Anordnung
der Dimensionentabellen um die Faktentabelle des InfoCubes. Die Dimensionentabellen repräsentieren dabei die eigentlichen Auswertungssichten
der Merkmale wie z.B. Kunde, Artikel, Tag usw.; die Stammdatentabellen
enthalten die Merkmalsausprägungen wie z.B. Preis oder Farbe eines Produkts, während die Faktentabelle die metrischen Kennzahlen wie Umsatz,
Absatz, Erlös usw. enthält. Alle Datenbanktabellen eines InfoCubes können über die Transaktion LISTSCHEMA aufgerufen werden (siehe Abbildung 9.10).
347
Star-Schema
1182.book Seite 348 Mittwoch, 4. März 2009 6:38 18
9
Indizes und DB-Statistiken
Abbildung 9.10 Demo-InfoCube ZMVIST (I)
In dem folgenden Beispiel soll die Verknüpfung der Faktentabelle des
InfoCubes ZMVIST mit der Dimensionentabelle Material und den Stammdatentabellen des Merkmals Material näher erläutert werden.
In Abbildung 9.11 sind die Tabellen des InfoCubes ZMVIST dargestellt.
Die Faktentabelle /BIC/FZMVIST enthält die Kennzahlen und die Fremdschlüssel zu den in Abbildung 9.10 aufgelisteten Dimensionentabellen. In
dem Beispiel wird die Schlüsselbeziehung der Faktentabelle zur Dimensionentabelle Material (/BIC/DZMVIST2) und dem Stammdatenmerkmal
Material (/BI0/XMATERIAL) sowie dem Attribut Materialgruppe
(/BI0/SMATL_GROUP) betrachtet.
Die Faktentabelle enthält je InfoCube-Dimension eine Spalte mit Fremdschlüsseln und eine Spalte je Kennzahl.
DIMID
Jede Dimensionentabelle besitzt eine Spalte mit einer Dimensionen-ID
(DIMID), die den Primärschlüssel der Tabelle enthält, sowie eine Spalte je
Merkmal in der Dimension. In diese Spalten werden die SID-Schlüssel der
korrespondierenden Merkmale geschrieben. In Abbildung 9.11 enthält
die Dimensionentabelle Material (/BIC/DZMVIST2) den Primärschlüssel
der Tabelle (DIMID) sowie einen SID-Schlüssel zu den korrespondierenden Tabellen des Merkmals Material.
348
1182.book Seite 349 Mittwoch, 4. März 2009 6:38 18
Indizierungsschema in SAP NetWeaver BW
Faktentabelle
Attribut „Materialgruppe“
Dimensionentabelle „Material“
SID-Tabelle „Material“ (Nav-Attribute)
Abbildung 9.11 Demo-InfoCube ZMVIST (II)
Die korrespondierenden Tabellen zum SID-Schlüssel können verschiedene Tabellen sein: Die Standard-S-Tabelle /BI0/SMATERIAL, in der die
Beziehung zwischen SID-Schlüsseln der Dimension und dem Merkmal
gespeichert ist, die X-Tabelle /BI0/XMATERIAL, in der die Beziehung zwischen SID-Schlüsseln der Dimension und den SID-Schlüsseln der zeitunabhängigen Navigationsattribute gespeichert ist, oder die Y-Tabelle, in der
die Beziehung zwischen SID-Schlüsseln der Dimension und den SIDSchlüsseln der zeitabhängigen Navigationsattribute gespeichert ist.
Die SID-Schlüssel in den obigen Tabellen verzweigen dann auf die Standard-S-Tabelle der Navigationsattribute, z.B. auf das Navigationsattribut
Materialgruppe (/BI0/SMATL_GROUP).
Indizierung der Faktentabelle in Standard-InfoCubes
Seit den BW-Releases BW 2.x und BW 3.x werden zwei Faktentabellen je
InfoCube verwendet. Die F-Faktentabelle enthält die unkomprimierten
Daten-Requests (Request-Package-IDs > 0), die E-Faktentabelle enthält die
komprimierten Daten-Requests (Request-Package-IDs = 0). Wird ein InfoCube komprimiert, werden die Datensätze über die Request-ID verdichtet,
aus der F-Faktentabelle gelöscht und in die E-Faktentabelle kopiert.
349
9.4
1182.book Seite 350 Mittwoch, 4. März 2009 6:38 18
9
Indizes und DB-Statistiken
Indexschema
Oracle
Das Indexschema ist für beide Tabellentypen nahezu identisch. In der
Regel werden in Oracle-Datenbanken alle Spalten mit einem Fremdschlüssel für die Dimensionentabelle (Präfix KEY_) mit einem Bitmap-Index indiziert.
Eine Ausnahme bilden hier Dimensionen mit Merkmalen, für die das Flag
Hohe Kardinalität eingeschaltet ist, also Dimensionentabellen, die über
sehr viele Datensätze verfügen. Für solche Merkmale werden in OracleDatenbanksystemen die Fremdschlüssel mit B*-Tree-Index indiziert, da
der Bitmap-Index für Merkmale mit vielen Ausprägungen schlechter
geeignet ist. Die Auswahl des Indextyps (Bitmap oder B*-Tree) wird beim
Anlegen des InfoCubes in der Pflege der Dimensionen bestimmt (siehe
Abbildung 9.12).
09_12.emf
Abbildung 9.12 Einstellung »Hohe Kardinalität« bei Pflege der Dimensionen
Die so vom BW-System erzeugten Sekundärindizes haben als Präfix
Namen der Form /BIC/F<InfoCube>~010, ~020 etc. Die Indizes auf den
Dimensionenschlüsseln der Faktentabelle unterstützen die Lesezugriffe
durch Queries.
Weder die E- noch die F-Faktentabelle verfügt über einen eindeutigen
Index, der über den Primärschlüssel der Tabelle definiert ist. Neben den
Sekundärindizes existiert ein zusammengesetzter Index über alle Spalten
der DIMIDs, der sogenannte P-Index (Präfix /BIC/F<InfoCube>~P). Der
350
1182.book Seite 351 Mittwoch, 4. März 2009 6:38 18
Indizierungsschema in SAP NetWeaver BW
9.4
P-Index existiert in Oracle-Datenbanksystemen nur auf der E-Faktentabelle
und beschleunigt den Komprimierungsprozess. Dabei wird die E-Faktentabelle auf vorhandene Kombinationen von Dimensionen-IDs überprüft, um
zu bestimmen, ob der aus der F-Faktentabelle zu verarbeitende Datensatz
eingefügt (wenn die Kombination der Dimensionen-IDs noch nicht in der
E-Faktentabelle vorhanden sind) oder fortgeschrieben werden soll. Ohne
P-Index ist die Komprimierungsperformance erheblich beeinträchtigt.
In DB2/400-basierten SAP NetWeaver BW-Systemen existieren für jede
Spalte des Dimensionen-Fremdschlüssels zwei Sekundärindizes: ein sogenannter Radix-Index, der einem binären Baum entspricht. Bei Zugriffen
auf die Faktentabelle wird hauptsächlich dieser Index benutzt. Diese
Sekundärindizes haben als Präfix Namen der Form /BIC/F<InfoCube>+10,
+20 etc. Zudem gibt es noch den sogenannten Encode-Vector-Index (EVI).
Dieser Index ist eine DB2/400-spezifische Weiterentwicklung des BitmapIndex; er ist durch seine kompakte Größe schnell aufzubauen und effizient
in den Lesezugriffen. Er wird benötigt für dynamische Bitmap-Indizierung, wie sie z.B. beim Star-Join vorkommt. Damit der Datenbankoptimierer den EVI nutzen kann, benötigt er zusätzliche Informationen, sogenannte Optimizer-Hints, um einen besseren Zugriffsplan zu ermitteln. Der
Datenbankoptimierer für DB2/400 muss hierfür über die sogenannten
Query Options Files (QAQQINI) auf den EVI-Index eingerichtet werden,
um ein bestimmtes Verhalten des Optimierers zu erzwingen. Nähere Hinweise für die Vorbereitung der EVI-Unterstützung in DB2/400-Datenbanksystemen finden Sie im SAP-Hinweis 501572.
F-Faktentabelle
„P-Index“
E-Faktentabelle
„P-Index“
Abbildung 9.13 Indexschema bei Faktentabellen von Standard-InfoCubes
351
Indexschema
DB2/400
non-unique,
- ORACLE:
Bitmap-Index
(Ausnahme:
Dimensionen
mit hoher
Kardinalität oder
transaktionale
InfoCubes),
- DB2/400: EVI
- Andere Datenbanksysteme:
B-Tree-Index
B-Tree-Index
(non-unique)
1182.book Seite 352 Mittwoch, 4. März 2009 6:38 18
9
Indizes und DB-Statistiken
P-Index
Gewöhnlich werden die Dimensionenschlüssel der Faktentabelle mit
einem non-unique P-Index (/BIC/F<InfoCube>~P bzw. /BIC/E<InfoCube>~P) indiziert. In Oracle- und Informix-basierten BW-Systemen wird
nur die E-Faktentabelle mit dem P-Index indiziert. Auf MS SQL Server
wird die E-Faktentabelle mit einem Unique-0-Index indiziert. In
DB2/UDB-basierten BW-Systemen wird der P-Index auf der E- und auf der
F-Faktentabelle als ein Clustering-Index angelegt. Ein Clustering-Index
sortiert alle Datensätze einer Tabelle physikalisch in der Datenbank. Dabei
beginnt der Cluster-Index mit der Zeitdimension, gefolgt von allen weiteren Dimensionen. Lese- und Löschzugriffe werden dadurch beschleunigt.
Indizierung der Dimensionentabellen
B-Tree-Index
In den Dimensionentabellen wird der Primärschlüssel der DIMIDs im Allgemeinen mittels eines Unique-B-Tree-Index indiziert. Diese Indizes
haben Präfix-Namen der Form /BIC/D<InfoCube><#>~0 (# steht für die
Nummer der Dimension des InfoCubes) bzw. die Suffixe P (Paket-Dimension), U (Unit-Dimension) oder T (Zeit-Dimension). Mit Ausnahme von
Oracle- und DB2/400-Datenbanksystemen werden alle einzelnen Spalten
der SID-Schlüssel zudem über non-unique B-Tree-Sekundärindizes indiziert, um die Ladeprozesse zu beschleunigen. Die erste SID-Spalte benötigt
dabei gewöhnlich keinen Index, da sie die erste Spalte im Index über alle
SID-Spalten ist.
In Oracle- und DB2/400-Datenbanksystemen werden SID-Schlüssel in der
Dimensionentabelle mittels eines zusammengesetzten non-unique B-TreeIndex indiziert (Präfix-Name /BIC/D<InfoCube><#>~010).
Dimensionentabelle
B-Tree (non-unique)
B-Tree-Index (unique)
Abbildung 9.14 Indexschema bei Dimensionentabellen
352
1182.book Seite 353 Mittwoch, 4. März 2009 6:38 18
Indizierungsschema in SAP NetWeaver BW
Indizes für Dimensionentabellen mit hoher Kardinalität
Standardmäßig erzeugt SAP NetWeaver BW auf den Spalten der Dimensionenschlüssel in der Faktentabelle eines InfoCubes einen Single-ColumnBitmap-Index (siehe Abbildung 9.14). Bei großen Dimensionen und Attributen mit hoher Kardinalität ist der Bitmap-Index nicht gut geeignet, da
die durch Datenänderungen (Inserts, Deletes) bedingte Reorganisation der
Bitmap-Indizes teurer ist als B-Tree-Indizes und der Platzbedarf des
Bitmap-Index von der Kardinalität der Attribute abhängt. SAP NetWeaver
BW bietet deshalb die Möglichkeit, in der Pflege der Dimensionen den
standardmäßig erzeugten Bitmap-Index in einen B-Tree-Index zu ändern
(siehe Abbildung 9.12). Durch Aktivierung des Flags Hohe Kardinalität
wird der Bitmap-Index zum B-Tree-Index geändert. Ab BW 3.0 kann diese
Umschaltung separat gepflegt werden von der Einstellung der Line Item
Dimension.
Das Kennzeichen Hohe Kardinalität sollte nur gesetzt werden, wenn die
Anzahl der Datensätze in der Dimensionentabelle mindestens 20% der
Anzahl Datensätze in der Faktentabelle entspricht. Bei anderen Datenbanksystemen als Oracle hat diese Einstellung keine Auswirkung auf den
Indextyp oder die Query-Performance, da Bitmap-Indizes nur in OracleDatenbanken verwendet werden. Sie kann jedoch zu einer verbesserten
Ladeperformance beitragen, da während des Ladevorgangs einige interne
Prüfungen durchgeführt werden, die über den Einsatz verschiedener
Ladestrategien entscheiden. Es wird deshalb empfohlen, auch bei NichtOracle-Datenbanksystemen bei hoher Kardinalität das Kennzeichen zu setzen.
Die standardmäßig seitens SAP NetWeaver BW erzeugten Bitmap-Indizes
in den Spalten der Dimensionenschlüssel der Faktentabelle sind die für
den Star-Query-Join einzig verwendbaren Indizes. Bis zum Release Oracle
8.1 konnte bei Erzeugung von B-Tree-Indizes durch Einschaltung des Flags
Hohe Kardinalität der Index in Oracle-basierten BW-Systemen nicht
gewählt werden, da der B-Tree-Index im Star-Query-Join auf OracleDatenbanken nicht verwendet wurde.
Theoretisch konnte Oracle den B-Tree-Index zwar nutzen, aber der Datenbankoptimierer musste den Index zur Laufzeit in einen Bitmap-Index
umwandeln. Diese Eigenschaft wurde durch die SAP explizit ausgeschaltet, da ihr Einsatz zu falschen Daten geführt hatte. Die Option wurde
durch den Datenbankparameter B_TREE_BITMAP_PLANS gepflegt, der
seitens der SAP auf »FALSE« eingestellt war.
353
Hohe
Kardinalität
9.4
1182.book Seite 354 Mittwoch, 4. März 2009 6:38 18
9
Indizes und DB-Statistiken
Ab Oracle 8.1 ist dieser Fehler behoben. Der Datenbankparameter B_
TREE_BITMAP_PLANS ist somit obsolet und nicht mehr gültig.
Wie groß das Verhältnis der Fakten- und Dimensionentabellen bezüglich
der Anzahl Datensätze ist, kann mit der Transaktion RSRV geprüft werden
(siehe Abbildung 9.15). In der Rubrik Datenbank muss hierzu der Elementartest Datenbankinformationen über die Tabellen eines InfoProviders über das Kontextmenü ausgewählt � und der zu überprüfende
InfoProvider angegeben werden �. Nach Ausführung des Tests � können im Testprotokoll die Anzahl der Datensätze sowie das Verhältnis der
Größe der Dimensionentabellen anhand der Angabe der Größe der Faktentabelle geprüft werden (»Größe entspricht x % des InfoCubes«) �.
Abbildung 9.15 Transaktion RSRV – Prüfung der Fakten- und Dimensionentabellen
9.4.2
Indizierung bei transaktionalen InfoCubes
In transaktionalen InfoCubes, wie sie z.B. im SAP SEM eingesetzt werden,
ist das standardmäßige Bitmap-Indexschema für die Dimensionen-IDs
nicht geeignet. Realtime-fähige InfoCubes sollen neben Leseprozessen
auch gleichzeitige Schreibzugriffe unterstützen. Hierzu ist ein satzweises
Sperren des Index erforderlich. Da für Bitmap-Indizes kein »Row-Level
Locking« unterstützt wird, würde es bei Datenänderungen und Aktualisierung der Bitmap-Indizes zu Sperrungen kommen, die bei UPDATE-Operationen die Performance aufgrund von Deadlocks erheblich beeinträchtigen
(ORA-60-Fehler).
Der Unterschied zu Standard-InfoCubes liegt deshalb in der Indizierung
der Dimensionen-IDs, der F-Faktentabelle mit dem B-Tree-Index, der satz-
354
1182.book Seite 355 Mittwoch, 4. März 2009 6:38 18
Indizierungsschema in SAP NetWeaver BW
weises Sperren unterstützt. Die E-Faktentabelle für komprimierte
Requests ist von dem geänderten Indexierungsschema nicht betroffen, da
Schreibzugriffe nur auf der F-Faktentabelle stattfinden.
Hinweis
In dem geänderten Indexierungsschema für transaktionale InfoCubes auf Oracle- oder DB2/400-Datenbanksystemen ist deshalb auch der Grund für die
schlechtere Leseperformance von Realtime-InfoCubes zu suchen, da die Verwendung des Bitmap-Index bei sehr vielen Datensätzen teurer ist als der B-TreeIndex. Achten Sie deshalb bei der Verwendung von transaktionalen InfoCubes
auf die regelmäßige Komprimierung.
Andere Datenbanksysteme als Oracle oder DB2/400 verwenden für Standard-InfoCubes und transaktionale InfoCubes ein identisches Indexierungsschema.
F-Faktentabelle
E-Faktentabelle
„P-Index“
ORACLE : Bitmap-Index
B-Tree-Index (non-unique)
Abbildung 9.16 Indexschema Faktentabelle von Realtime-InfoCubes
9.4.3
Indizierung partitionierter InfoCubes (Oracle)
In partitionierten InfoCubes werden die Daten der Faktentabelle physisch
auf mehrere Partitionen der Datenbank verteilt. Die Verteilung der Daten
erfolgt anhand eines Partitionierungsmerkmals, das im Basis-InfoCube als
Zeitmerkmal definiert sein muss. In SAP NetWeaver BW können derzeit
nur die Zeitmerkmale 0CALMONTH und 0FISCPER als Partitionierungs-
355
9.4
1182.book Seite 356 Mittwoch, 4. März 2009 6:38 18
9
Indizes und DB-Statistiken
merkmale eingestellt werden. Die Partitionierung wird nur auf der komprimierten E-Faktentabelle durchgeführt. In der F-Faktentabelle wird
hierzu ein weiterer Bitmap-Index auf der Spalte des Partitionierungsmerkmals eingefügt, die mit der entsprechenden Spalte des Partitionierungsmerkmals in der E-Faktentabelle korrespondiert (Präfix-Name
/BIC/F<InfoCube>~900). Der Datenbankoptimierer erkennt anhand des
Index auf dem Partitionierungsmerkmal in der F-Faktentabelle die richtige
Partition auf der Datenbank in der komprimierten E-Faktentabelle. Bei
einer Abfrage auf den partitionierten InfoCube übersetzt der SQL-Generator dazu die Zeitselektionen des Partitionierungsmerkmals in die entsprechenden Partitionierungsspalten, damit der Abfrageoptimierer die Query
auf die relevanten Partitionen der E-Faktentabelle leiten kann.
F-Faktentabelle
Partitionierungsspalte
E-Faktentabelle
„P-Index“
ORACLE : Bitmap-Index
B-Tree-Index (non-unique)
Abbildung 9.17 Indexschema Faktentabelle von partitionierten InfoCubes (Oracle)
9.4.4
Indizierung von DataStore-Objekten
DataStore-Objekte sind InfoProvider, die vorwiegend im Staging von BW
und gewöhnlich nicht als Analyse-Datenziele im Reporting verwendet
werden. In DataStore-Objekten werden seitens SAP NetWeaver BW deshalb keine Sekundärindizes automatisch erzeugt. Es existiert lediglich ein
Primärschlüssel, der über einen zusammengesetzten Primärindex auf die
Schlüsselfelder des DataStore-Objekts verfügt. In schreiboptimierten DataStore-Objekten wird ergänzend zum Index auf dem technischen Schlüssel
356
1182.book Seite 357 Mittwoch, 4. März 2009 6:38 18
Indizierungsschema in SAP NetWeaver BW
9.4
zusätzlich ein Index auf die Felder des semantischen Schlüssels erzeugt,
wenn dieser definiert ist.
Sollen DataStore-Objekte auch in der Query-Analyse verwendet werden
oder wird in Staging-Prozessen auf Feldern eines DataStore-Objekts gelesen, können Sekundärindizes in der Pflege des DataStore-Objekts auch
manuell angelegt werden (siehe Abbildung 9.18).
09_18.emf
Abbildung 9.18 Pflege Indizes bei DataStore-Objekten (I)
Das Merkmalsfeld, auf das ein Index angelegt werden soll, muss hierfür
aus den Datenfeldern über das Kontextmenü Kopieren (für Index) kopiert
oder durch Ziehen des Merkmalsfelds in den Index eingefügt werden
(siehe Abbildung 9.19).
Wenn die Werte in den Indexfeldern jeden Datensatz eindeutig identifizieren, sollten Sie einen Unique-Index erstellen, andernfalls kann es zu
Fehlern in der Aktivierung kommen, wenn die Werte nicht eindeutig sind.
Die Bezeichnung des Index wird durch das System ausgewählt. Es können
maximal 16 Sekundärindizes erstellt werden, es wird aber empfohlen,
nicht mehr als fünf Sekundärindizes anzulegen.
357
Sekundärindizes manuell
anlegen
1182.book Seite 358 Mittwoch, 4. März 2009 6:38 18
9
Indizes und DB-Statistiken
Abbildung 9.19 Pflege Indizes bei DataStore-Objekten (II)
9.4.5
Navigationsattribute
Indizierung der Stammdatentabellen (X-/Y-Tabellen)
Die Stammdatentabellen der Navigationsattribute sind lediglich über den
Primärschlüssel indiziert (Präfix-Name /BIC/X<Navigationsattribut>~0
beziehungsweise /BIC/Y<Navigationsattribut>~0), SAP NetWeaver BW
legt auf den Spalten der Merkmalswerte und Navigationsattribute
gewöhnlich keine Indizes an. Bei Verwendung von Navigationsattributen
in Queries ist zu beachten, dass Navigationsattribute im erweiterten StarSchema einen zusätzlichen Join benötigen im Vergleich zu einer Query
mit dem gleichen Objekt als Merkmal. Bei Verwendung von Einschränkungen auf Werten des Navigationsattributs in einer Query kann es deshalb sinnvoll sein, zusätzliche Indizes manuell auf den Stammdatentabellen des Navigationsattributs anzulegen.
Ob zusätzliche Indizes angelegt werden sollen, hängt zuletzt von der
Query-Selektion ab, ob Einschränkungen auf Merkmale oder Navigationsattribute in der Query enthalten sind. Typische Szenarien hierfür sind z.B.
Queries mit Navigationsattributen auf großen Stammdatentabellen (>
20.000 Datensätze) mit Einschränkungen auf dem Navigationsattribut
oder bei der (F4)-Wertehilfe auf solchen Navigationsattributen. SAP NetWeaver BW übersetzt die Datenselektion im Allgemeinen in SID-basierte
Einschränkungen.
358
1182.book Seite 359 Mittwoch, 4. März 2009 6:38 18
Indizierungsschema in SAP NetWeaver BW
Stammdatentabelle X (Material)
Primärindex
/BI0/XCUSTOMER~0
• Sekundärindizes
• Werden durch BW nicht automatisch erzeugt
• Können zusätzlich auf Stammdatentabellen angelegt werden
• Bitmap-Index oder B-Tree -Index
Abbildung 9.20 Indexschema bei Stammdatentabellen
In der Regel ist eine Indizierung der Merkmalsspalten nicht erforderlich,
meist ist ein Einspalten-Index über eingeschränkte Navigationsattribute
sinnvoller. Je nach Kardinalität des Attributs sollten Sie bei wenigen
Merkmalsausprägungen einen Bitmap-Index verwenden beziehungsweise
bei sehr vielen Merkmalsausprägungen einen B-Tree-Index. Weiterführende Informationen zum Anlegen von Indizes auf InfoObjects von
Stammdaten finden Sie in Abschnitt 9.6.2.
Indizierung der SID-Tabellen
Die SID-Tabellen eines Merkmals haben zwei Unique B-Tree-Indizes,
einen Primärindex auf der Wertespalte des Merkmals (Präfix-Name
/BIC/S<Merkmal>~0) und einen Sekundärindex auf der SID-Spalte (PräfixName /BIC/S<Merkmal>~001).
SID-Tabelle (Material)
Primärindex
/BI0/SCUSTOMER~0
Sekundärindex
/BI0/SCUSTOMER~001
B-Tree-Index (unique)
Abbildung 9.21 Indexschema bei SID-Tabellen
359
9.4
1182.book Seite 360 Mittwoch, 4. März 2009 6:38 18
9
Indizes und DB-Statistiken
Schutzmechanismus
Die Bedingung eines Unique-Index auf der SID-Spalte ist ein zusätzlicher
Schutzmechanismus, der das Einfügen doppelter SID-Schlüssel verhindert. Beide Indizes beschleunigen die häufig benutzte Funktion der Übersetzung eines SID-Schlüssels in die Merkmalsausprägung und umgekehrt.
9.5
Query-Monitor
Star-Join-Ausführungsplan
Die Nutzung der Indizes bei der Ausführung einer Query kann über den
Ausführungsplan (Execution Plan) in SAP NetWeaver BW eingesehen werden. Im Query-Monitor (Transaktion RSRT) muss hierzu in der Option
Ausführen und Debuggen die Einstellung Zeige Ausführungsplan
gewählt werden (siehe Abbildung 9.22).
Abbildung 9.22 Query-Monitor – Anzeige des Ausführungsplans
In Abbildung 9.23 ist der Ausführungsplan einer Query dargestellt. Der
Ausführungsplan beschreibt die Schritte, die von der Datenbank bei der
Ausführung der Query durchlaufen werden.
360
1182.book Seite 361 Mittwoch, 4. März 2009 6:38 18
Star-Join-Ausführungsplan
9.5
Abbildung 9.23 Ausführungsplan einer Query
Über den Ausführungsplan kann die Nutzung der Indizes geprüft werden.
Zu jeder im Ausführungsplan aufgerufenen Tabelle können die Indizes
und weitere Informationen zur Größe der Tabellen und Berechnung der
Statistiken abgerufen werden (siehe auch Abschnitt 9.8).
Hinweis
Das Lesen und Interpretieren von Ausführungsplänen bedarf grundsätzlich einiger Übung und ist zumeist dem erfahrenen Datenbankadministrator vorbehalten. Die im Ausführungsplan angezeigten Begriffe werden zudem durch das Datenbanksystem bestimmt und unterscheiden sich bei den verschiedenen Datenbanksystemherstellern.
Dem Ausführungsplan können Sie zum einen die an der Query beteiligten
Objekte wie Tabellen und Indizes entnehmen, die durch die Schlüsselwörter TABLE und INDEX eingeleitet werden. Zum anderen lassen sich im Ausführungsplan die vom Datenbankoptimierer gewählten Zugriffsarten und
Join-Operationen ablesen, die z.B. durch Schlüsselwörter wie TABLE
ACCESS FULL oder MERGE JOIN bestimmt werden. Grundsätzlich können bei
einem Ausführungsplan die folgenden Typen von Operationen unterschieden werden, die in Tabelle 9.2 dargestellt sind (Auszug am Beispiel
des Datenbanksystems Oracle):
361
Aufbau des
Ausführungsplans
1182.book Seite 362 Mittwoch, 4. März 2009 6:38 18
9
Indizes und DB-Statistiken
Operationstyp
Beispiele
Basisoperation
(Statement)
SELECT, UPDATE, INSERT, DELETE
Zugriffsarten
INDEX UNIQUE SCAN, INDEX RANGE SCAN, INDEX FULL SCAN
TABLE ACCESS FULL, TABLE ACCESS BY INDEX ROWID, TABLE
ACCESS CLUSTER
Join-Operationen
HASH JOIN, HASH JOIN SEMI, HASH JOIN ANTI, MERGE JOIN
MERGE JOIN OUTER, MERGE JOIN ANTI, MERGE JOIN SEMI,
MERGE JOIN CARTESIAN, NESTED LOOPS, NESTED LOOPS
OUTER
Sortieroperationen
SORT UNIQUE, SORT JOIN, SORT ORDER BY, SORT GROUP BY
SORT AGGREGATE, BUFFER SORT
Filteroperationen
FILTER
Mengenoperationen INTERSECTION, MINUS, UNION, CONCATENATION
Tabelle 9.2 Operationstypen in Ausführungsplänen
Für das strukturierte Lesen des Ausführungsplans ist empfehlenswert, den
Ausführungsplan zunächst in Blöcke der an der Query beteiligten Tabellen
zu zerlegen und den Plan von innen nach außen zu lesen, das heißt in der
Reihenfolge der Tabellenzugriffe, die der Nummerierung der Operationsschritte entnommen werden können. Das Prinzip ist in Abbildung 9.24
dargestellt.
Dimension „Zeit“ (/BI0/D0SD_C14T)
Dimension „Kunde“ (/BI0/D0SD_C142)
Faktentabelle /BI0/F0SD_C14
Dimension „Paket“ (/BI0/D0SD_C14P)
Abbildung 9.24 Aufbau eines Ausführungsplans
362
1182.book Seite 363 Mittwoch, 4. März 2009 6:38 18
Star-Join-Ausführungsplan
9.5
In der Beispiel-Query werden Daten aus der Faktentabelle /BI0/F0SD_C14
des InfoCubes 0SD_C14 selektiert. Die Eingrenzung der Daten in der Faktentabelle erfolgt über die Dimensionen Zeit (Tabelle /BI0/D0SD_C14T),
Kunde (Tabelle /BI0/D0SD_C142) und Paket (Tabelle /BI0/D0SD_C14P).
Block 1 im Ausführungsplan:
Index Full Scan
INDEX FULL SCAN /BI0/D0SD_C14T~010
(Estim Costs = 2, Estim #Rows = 1)
Search Colums: 1
In Block 1 wird zunächst vom Datenbank-Optimizer die Zugriffsart INDEX
FULL SCAN auf den Index ~010 der Zeit-Dimensionentabelle /BI0/D0SD_
C14T gewählt. In Oracle-Datenbanksystemen werden die SID-Schlüssel in
der Dimensionentabelle mittels eines zusammengesetzten non-unique BTree-Index indiziert (zum Indexschema von Dimensionentabellen siehe
auch Abschnitt 9.4.1). Immer wenn ein Index Scan ausgeführt wird, werden Daten aus einem Index gelesen, um die Schlüssel (Row-IDs) der benötigten Datensätze zu finden. Beim INDEX FULL SCAN durchsucht der OracleProzess den Indexbaum anhand seiner logischen Sortierung. Das Ergebnis
ist eine sortierte Ergebnismenge.
TABLE ACCESS BY INDEX ROWID /BI0/D0SD_C14T
(Estim Costs = 2, Estim #Rows = 1)
Bei der Zugriffsart TABLE ACCESS BY INDEX ROWID werden der zu lesende
Block und die Nummer des Datensatzes über die physikalische Adresse
(Row-ID) ermittelt, die zuvor über den Index Scan ausgelesen wurde. Der
Zugriff über die Row-ID ermöglicht ein schnelles Lesen des Datensatzes
aus der Tabelle.
Das Ergebnis der Operation im ersten Block ist die Selektion eines Datenrecords in der Dimension Zeit, da die SAP BEx Query als Selektionsparameter das Zeitmerkmal 0CALMONTH enthält.
Block 2 im Ausführungsplan:
Full Table Scan
TABLE ACCESS FULL /BI0/D0SD_C142
(Estim Costs = 2, Estim #Rows = 1)
In Block 2 des Ausführungsplans erfolgt eine vollständige Tabellendurchsuchung (Full Table Scan) der Dimensionentabelle Kunde (/BI0/D0SD_
C142). Bei einem Full Table Scan werden alle Blöcke der Tabelle in den
Block-Puffer gelesen und dort die einzelnen Zeilen mit der WHERE-Bedin-
363
1182.book Seite 364 Mittwoch, 4. März 2009 6:38 18
9
Indizes und DB-Statistiken
gung oder anderen Zugriffen weiterverarbeitet. Mit dem Full Table Scan
wird häufig ein langsamer Zugriff assoziiert. Bei kleinen Tabellen ist der
Full Table Scan jedoch meist die günstigere Operation als der Zugriff über
den Index. Bei der Durchsuchung großer Tabellen mit kleinen Ergebnismengen ist der Full Table Scan ein Hinweis auf fehlende Indizes. Das
Ergebnis des Tabellenzugriffs wird anschließend im Daten-Puffer sortiert
(Prozessschritt 4: BUFFER SORT). Die Ergebnismengen aus Block 1 und 2
werden dann über einen Cartesian Join miteinander verbunden (Prozessschritt 5: MERGE JOIN CARTESIAN). Beim Cartesian Join werden alle Datensätze der ersten Ergebnismenge (Block 1) mit allen Datensätzen der zweiten Ergebnismenge (Block 2) verknüpft, da beide Ergebnismengen aus
Block 1 und Block 2 jeweils nur einen Datensatz enthalten.
Index Range
Scan
Block 3 im Ausführungsplan:
INDEX RANGE SCAN /BI0/F0SD_C14~020
Search Columns: 1
In Block 3 erfolgt ein Zugriff auf den Index ~020 der Faktentabelle
/BI0/F0SD_C14 des InfoCubes 0SD_C14 mittels der Zugriffsart Index
Range Scan. Der Index ~020 ist der durch einen Bitmap-Index indizierte
Fremdschlüssel der Dimension Zeit in der Faktentabelle (zum Indexschema von Faktentabellen siehe auch Abschnitt 9.4.1). Beim Index Range
Scan findet der Optimizer im Index eine Ergebnismenge von mehreren
Row-IDs, der anschließende Datenzugriff in der Tabelle erfolgt wieder
über die physikalische Adresse der Datensätze (Prozessschritt 7: TABLE
ACCESS BY INDEX ROWID).
Die Ergebnismenge aus Block 3 wird mit dem Join-Ergebnis aus den Blöcken 1 und 2 über die Join-Operation NESTED LOOPS in Prozessschritt 8
miteinander verknüpft. Beim Nested Loop wird für jeden Datensatz der
ersten Ergebnismenge die zweite Ergebnismenge vollständig durchsucht.
Wenn beide Ergebnismengen sehr klein sind oder ein kartesisches Produkt (jeder mit jedem) vorliegt, ist der Nested Loop meist die günstigste
Join-Variante. Wenn beide Ergebnismengen sehr groß sind, ist der Nested
Loop die ungünstigste Join-Variante. Im Beispiel in Abbildung 9.18 sind
beide Ergebnismengen sehr klein, weshalb hier die Join-Variante Nested
Loop gewählt wird.
Index Unique
Scan
Block 4 im Ausführungsplan:
INDEX UNIQUE SCAN /BI0/D0SD_C14P~0
Search Columns : 1
364
1182.book Seite 365 Mittwoch, 4. März 2009 6:38 18
Star-Join-Ausführungsplan
In Block 4 erfolgt ein Scan über den Index ~0 des Primärschlüssels der
Tabelle /BI0/D0SD_C14P (Dimensionentabelle Paket). In Dimensionentabellen wird der Primärschlüssel der DIMIDs im Allgemeinen mittels eines
Unique B-Tree-Index indiziert (zum Indexschema von Dimensionentabellen siehe auch Abschnitt 9.4.1). Der Index Unique Scan wird verwendet,
wenn in der WHERE-Bedingung eine Spalte verwendet wird, auf der ein
Unique-Index liegt. Die Indexblöcke werden dabei vom Root-Block bis
zum Leaf-Block gelesen. Der eigentliche Datenzugriff erfolgt wieder über
die physische Adresse des Datensatzes (TABLE ACCESS BY INDEX ROWID) in
der Tabelle /BI0/D0SD_C14P der Dimension Paket.
Die Ergebnismenge aus Block 4 wird mit der Ergebnismenge aus Block 1
+ 2 und 3 erneut über einen Nested Loop verknüpft.
Die hier vorgestellte Methodik zum Lesen von Ausführungsplänen hilft,
die meisten Ausführungspläne in BW zu verstehen und zu interpretieren.
Die in dem Beispiel in Abbildung 9.24 vorgestellten Join-Operationen und
Zugriffsarten des Datenbanksystems Oracle stellen nur einen kleinen Ausschnitt der verfügbaren Prozessschritte dar. Die wichtigsten Join-Operationen und Zugriffsarten sind deshalb bezüglich ihrer inhaltlichen Bedeutung in Tabelle 9.3 zusammengestellt:
Typ
Operation
Beschreibung
JoinOperationen
NESTED LOOP
Durchsucht für jeden Datensatz der ersten
Ergebnismenge die gesamte zweite Ergebnismenge.
SORT MERGE JOIN
Verknüpft zwei gleich geordnete Ergebnismengen. Sehr effizient bei etwa gleich großen, bereits vorsortierten Ergebnismengen.
HASH JOIN
Liest die kleinere Ergebnismenge in den Speicher und berechnet für das Join-Kriterium
eine Tabelle mit Hash-Schlüsseln, die einen
schnelleren Zugriff auf die Ergebnismenge
ermöglichen als der Indexzugriff.
ANTI JOIN
Liest die Datensätze, zu denen keine korrespondierenden Datensätze existieren (z.B. bei
NOT IN-Klauseln).
OUTER JOIN
Erzeugt eine Vereinigungsmenge zweier
Datenmengen, auch wenn keine korrespondierenden Sätze enthalten sind.
Tabelle 9.3 Zusammenstellung von Oracle-Join-Operationen und Zugriffsarten
365
9.5
1182.book Seite 366 Mittwoch, 4. März 2009 6:38 18
9
Indizes und DB-Statistiken
Typ
Operation
Beschreibung
JoinOperationen
CARTESIAN JOIN
Verknüpft alle Sätze der ersten Ergebnismenge mit allen Sätzen der zweiten Ergebnismenge (Kreuzprodukt).
Zugriffsarten
FULL TABLE SCAN
Durchsucht vollständig eine Tabelle. Sehr
effizient bei kleinen Tabellen. Ineffektiv bei
großen Tabellen mit kleinen Ergebnismengen
(möglicher Hinweis auf fehlenden Index).
TABLE ACCESS BY
Ermittelt über die physikalische Adresse
(Row-ID) des Datenblocks die Nummer des
Datensatzes, wobei die Row-ID in der Regel
über einen Index Scan ermittelt wird.
INDEX ROWID
INDEX UNIQUE
SCAN
INDEX RANGE
SCAN
Index Scan auf Spalten mit Unique-Index,
z.B. bei Primärschlüsseln. Es wird jeweils eine
Zeile zurückgegeben.
Index Scan auf einen Wertebereich im Indexbaum, es wird ein Zeilenbereich zurückgegeben (LIKE, BETWEEN, ORDER BY).
INDEX FULL SCAN
Durchsucht den Indexbaum, bis alle passenden Werte gefunden sind. Das Ergebnis liegt
als sortierte Ergebnismenge vor.
FAST FULL INDEX
Liest alle Blöcke eines Index, ohne die Datenblöcke der Tabelle selbst zu lesen. Sehr effizient, wenn alle in der WHERE-Bedingung benötigten Daten im Index vorhanden sind.
SCAN
Tabelle 9.3 Zusammenstellung von Oracle-Join-Operationen und Zugriffsarten (Forts.)
9.6
Administration der Indizes
Mit den BW-seitigen Administrationswerkzeugen können Indizes angelegt, überprüft und gelöscht werden. Die Administration von Indizes mit
Datenbank-Tools ist hierfür nicht erforderlich. Die Erstellung der Indizes
erfolgt mit der Anlage von Tabellen in SAP NetWeaver BW weitestgehend
automatisch (z.B. Indizes auf Fremdschlüsseln der Faktentabelle eines
InfoCubes). In einigen Fällen kann es nützlich sein, zu den bereits vorhandenen Indizes weitere Sekundärindizes anzulegen. Die Erstellung zusätzlicher Indizes oder die Löschung von Indizes sollte grundsätzlich mit den
im BW-System vorhandenen Administrationswerkzeugen erfolgen, da auf
diese Weise die Indextabellen automatisch im Data Dictionary bekanntgemacht werden.
366
1182.book Seite 367 Mittwoch, 4. März 2009 6:38 18
Administration der Indizes
9.6.1
9.6
Indizes überprüfen
Für einen InfoCube kann der Status der Sekundärindizes der E- und F-Faktentabelle geprüft werden. Ausgenommen von dieser Prüfung sind der
Primärindex der Faktentabelle sowie benutzerdefinierte Indizes (z.B. Indizes mit Präfix-Namen der Form /BIC/F<InfoCube>~A10).
Abbildung 9.25 Überprüfung der Indizes von InfoCube und Aggregaten
Über das Kontextmenü Administrieren in der InfoCube-Pflege � stehen
unter der Registerkarte Performance verschiedene Administrationsfunktionen für Indizes zur Verfügung. Hierzu zählen die Überprüfung des Status der Indizes, das Löschen von Indizes und das Reparieren von Indizes
�. Für die mit dem InfoCube korrespondierenden Aggregate stehen die
gleichen Funktionen für die Indizes aller Aggregate-Faktentabellen zur
Verfügung �.
Über die Schaltfläche Indizes prüfen wird geprüft, ob bereits Indizes vorliegen und der Indextyp korrekt ist (Bitmap- oder B-Tree-Index): Ist der
Status Grün, liegen Indizes im korrekten Indextyp vor. Bei Status Gelb liegen Indizes mit einem falschen Indextyp vor, bei Status Rot existieren
keine Indizes oder Indizes sind defekt.
Indizes prüfen
Der Status der Indizes kann auch mit der Transaktion RSRV überprüft werden (siehe Abbildung 9.26). In der Rubrik Datenbank muss hierzu der
Elementartest Datenbank-Indizes eines InfoCubes und seiner Aggre-
Transaktion
RSRV
367
1182.book Seite 368 Mittwoch, 4. März 2009 6:38 18
9
Indizes und DB-Statistiken
gate über das Kontextmenü ausgewählt � und der zu überprüfende InfoCube angegeben werden �. Nach Ausführung des Tests � kann im Testprotokoll der Status der Datenbankindizes der Faktentabellen des
InfoCubes und aller zugehörigen Aggregate geprüft werden �.
Abbildung 9.26 Transaktion RSRV – Prüfung Datenbank-Indizes InfoCube und Aggregate
Transaktion
DB02
Fehlende Indizes können auch mit der Transaktion DB02 unter dem Menü
Diagnose 폷 Fehlende Tabellen und Indizes überprüft werden (siehe
Abbildung 9.27).
Abbildung 9.27 Transaktion DB02 – Überprüfung fehlender Indizes
368
1182.book Seite 369 Mittwoch, 4. März 2009 6:38 18
Administration der Indizes
9.6
Hinweis
Beachten Sie, dass beim Laden von InfoCubes Indizes automatisch gelöscht und
neu aufgebaut werden, um den Ladeprozess zu beschleunigen. Stellen Sie fehlende Indizes auf InfoCube-Faktentabellen fest, sollten Sie zunächst prüfen, ob
der InfoCube zum Zeitpunkt der Indexprüfung beladen wird.
Über die Funktion Fehlende Tabellen und Indizes erfolgt die Konsistenzprüfung für Primärindizes und Sekundärindizes auf der Datenbank. Fehlende Primärindizes sind als hoch kritisch einzustufen, da in einem solchen Fall die Konsistenz der Daten nicht mehr gewährleistet ist und die
Gefahr doppelter Schlüsseleinträge besteht. Durch den fehlenden Primärindex sind zudem die Datenbankzugriffe sehr inperformant.
Konsistenzprüfung für
Primär- und
Sekundärindizes
Im Ergebnisprotokoll der Konsistenzprüfung wird zwischen drei Indexkategorien unterschieden:
1. Indizes, die im ABAP Dictionary definiert sind, aber auf der Datenbank
fehlen
2. Indizes, die auf der Datenbank gefunden wurden, aber nicht im ABAP
Dictionary bekannt sind
3. Indizes, die im ABAP Dictionary als optionale Indizes definiert sind
Fehlende Datenbankindizes, die im ABAP Dictionary definiert sind, können z.B. dadurch entstehen, dass der Index mit einem datenbankeigenen
Tool gelöscht wurde. Die dauerhafte Löschung von Indizes sollte zur Vermeidung von Inkonsistenzen immer über das ABAP Dictionary erfolgen.
Indizes
im ABAP
Dictionary
Bei Indizes, die auf der Datenbank gefunden wurden, aber nicht im ABAP
Dictionary bekannt sind, kann es sich ebenfalls um Indizes handeln, die
mit einem Datenbank-Tool erzeugt wurden. Sofern die SAP-Namenskonvention für Indizes eingehalten wurde und der Index im Kundennamensraum liegt, können solche Indizes nachträglich im ABAP Dictionary angelegt werden. Andernfalls sollte der Index auf der Datenbank gelöscht
werden und mit der Transaktion SE11 erneut angelegt werden.
Indizes auf der
Datenbank
Optionale Indizes sind solche Indizes, für die in Abhängigkeit vom Datenbanksystem festgelegt wird, ob ein im ABAP Dictionary definierter Index
auf der Datenbank angelegt werden soll. Es kann dabei ausgewählt werden zwischen dem permanenten Anlegen von im ABAP Dictionary definierten Indizes auf der Datenbank, dem Anlegen der Indizes nur auf ausgewählten Datenbanksystemen oder keiner Anlage des Index auf der
Datenbank. In dieser Rubrik der Konsistenzprüfung werden solche Indizes
Optionale
Indizes
369
1182.book Seite 370 Mittwoch, 4. März 2009 6:38 18
9
Indizes und DB-Statistiken
angezeigt, die auf der Datenbank angelegt sind, obwohl sie laut Definition
im ABAP Dictionary nicht auf der vorliegenden Datenbank angelegt werden sollten, und Indizes, die auf der Datenbank fehlen, obwohl sie laut
ABAP Dictionary für das vorliegende Datenbanksystem angelegt werden
sollten.
In SAP NetWeaver BW 7.0 ist auch weiterhin das bis BW 3.50 gültige
DBA-Cockpit verfügbar, das mit der Transaktion DB02OLD aufgerufen
werden kann. Die oben beschriebenen Funktionen haben auch hier weiterhin ihre Gültigkeit (siehe Abbildung 9.28).
Abbildung 9.28 DBA-Cockpit DB02OLD
Prüfung von
Inkonsistenzen
Bei den Prüfungen auf Inkonsistenzen zwischen dem ABAP Dictionary
und dem Datenbankkatalog greift die Transaktion DB02 auf die interne
Tabelle DBDIFF zurück. In der Tabelle DBDIFF werden Ausnahmefälle
unter anderem für Tabellen und Indizes gespeichert, für die eine akzeptierte Inkonsistenz zwischen dem ABAP Dictionary und dem Datenbankkatalog besteht. Bei den in der Tabelle DBDIFF gespeicherten Objekten handelt es sich z.B. um Faktentabellen ohne Primärindex oder temporäre
Objekte wie temporäre Tabellen, Views oder Trigger. Die Objekte der
Tabelle DBDIFF werden bei der Transaktion DB02 berücksichtigt, indem
für diese Objekte keine Konsistenzfehler gemeldet werden.
370
1182.book Seite 371 Mittwoch, 4. März 2009 6:38 18
Administration der Indizes
9.6
Hinweis
Wenn temporäre Objekte in der Transaktion DB02 als inkonsistente Objekte gemeldet werden, sollten Sie den ABAP-Report SAP_UPDATE_DBDIFF ausführen,
der die Tabelle DBDIFF aktualisiert und die temporären Objekte in die Tabelle
einträgt. Nach Auffrischen der Ergebnisse in der Transaktion DB02 wird für diese
Objekte kein Konsistenzfehler mehr gemeldet.
Um Warnungen zur Inkonsistenz für ein Objekt zu unterdrücken, können
Einträge in die Tabelle DBDIFF für Ausnahmeregeln auch manuell erzeugt
werden. Hierzu existiert in der Transaktion SM30 die Pflegesicht DBDIFFVIEW. Benutzerdefinierte Einträge in die Tabelle DBDIFF sollten nur für
Objekte wie z.B. temporäre Tabellen erfolgen, die auf der Datenbank existieren, nicht aber im ABAP Dictionary.
9.6.2
Indizes aufbauen
Meldet die Transaktion DB02 im Ergebnisprotokoll fehlende Indizes, können diese direkt aus der Transaktion angelegt werden (siehe Abbildung
9.29).
09_29.emf
Abbildung 9.29 Anlegen von Indizes aus Transaktion DB02
Hierzu muss der fehlende Index mit der Schaltfläche Auf Datenbank
anlegen � auf der Datenbank erstellt werden �.
371
Inkonsistenzwarnungen
unterdrücken
1182.book Seite 372 Mittwoch, 4. März 2009 6:38 18
9
Indizes und DB-Statistiken
Löschen von
Indizes
Über die Schaltfläche Indizes löschen können in der InfoCube-Administration unter der Registerkarte Performance die Indizes des InfoCubes
gelöscht werden. Die InfoCube-Indizes sollten insbesondere dann
gelöscht werden, wenn durch Delta-Uploads von großen Datenmengen
(mehr als eine Million Sätze) aus Performancegründen die Indizes nicht
beim Hochrollen angepasst, sondern zunächst gelöscht und nach dem
Hochrollen vollständig neu aufgebaut werden sollen.
Neuaufbau von
Indizes
Der Neuaufbau der Indizes erfolgt über die Schaltfläche Indexaufbau
(batch). Diese Funktion stellt gelöschte Indizes wieder her und korrigiert
defekte Indizes. Löschung und Neuaufbau von Indizes eines InfoCubes
können durch die Einstellungen am InfoCube automatisiert werden (siehe
Abbildung 9.30).
Abbildung 9.30 Einstellungen für Löschung/Neuaufbau von InfoCube-Datenbankindizes
Das Verfahren der automatischen Löschung von Indizes vor jedem Ladevorgang und des Neuaufbaus nach Abschluss des Ladens beschleunigt
zwar den Ladeprozess, kann aber gleichzeitige Lesevorgänge auf einem
InfoCube stark verlangsamen. Achten Sie deshalb bei Anwendung dieses
Verfahrens darauf, dass während des Ladens von Daten keine Queries auf
dem InfoCube ausgeführt werden.
Der Neuaufbau von Indizes kann zu Sperrkonflikten mit dem automatischen Komprimieren und Hochrollen des InfoCubes führen, da während
des Indexaufbaus keine Requests in Aggregate hochgerollt oder komprimiert werden können. Es empfiehlt sich in diesem Fall die Einplanung der
Index-Jobs über Prozessketten. Ist für den InfoCube eine automatische
Request-Verarbeitung eingestellt, werden allerdings bei der Verwendung
von Prozessketten die Einstellungen der automatischen Request-Verarbeitung am InfoCube nicht berücksichtigt. Die automatischen Prozesse müssen dann als Prozesstypen in die Prozesskette zusätzlich eingebunden werden.
372
1182.book Seite 373 Mittwoch, 4. März 2009 6:38 18
Administration der Indizes
Die Einplanung und Ausführung der Indexing-Jobs der InfoCube-Administration kann in der Jobübersicht mit der Transaktion SM37 geprüft
werden. Die Namen aller Indexing-Jobs beginnen mit »BI_INDX«.
9.6
Jobeinplanung
Die Reparatur der InfoCube-Indizes ist auch mit dem ABAP-Report SAP_
INFOCUBE_INDEXES_REPAIR möglich. Dieser Report gilt für alle aktiven
InfoCubes und Aggregate. Der Bericht entfernt vorhandene Primärindizes
und legt fehlende P-Indizes der F- und fehlende Sekundärindizes aller
InfoCubes des BW-Systems neu an. Da eine selektive Auswahl eines InfoCubes nicht möglich ist und der Report zum systemweiten Reparieren von
InfoCube-Indizes verwendet wird, sollte dieser Job als Hintergrundprozess eingeplant werden.
Indizes auf Stammdatentabellen können mit Hilfe der Transaktion SE11
angelegt werden. Im Beispiel in Abbildung 9.31 kann ein zusätzlicher
Index auf dem Navigationsattribut Warengruppe (S__0MATL_GROUP) bei
sehr vielen Einträgen in der Stammdatentabelle des Objekts 0MATL_
GROUP die Query-Antwortzeit bei Verwendung des Navigationsattributs
verbessern. Dabei ist zunächst die Stammdatentabelle des InfoObjects
/BI0/XMATERIAL auszuwählen, um darin auf dem Feld des Navigationsattributs einen Index anzulegen.
Abbildung 9.31 Indizierung von Navigationsattributen
373
Indizes auf
Stammdatentabellen
1182.book Seite 374 Mittwoch, 4. März 2009 6:38 18
9
Indizes und DB-Statistiken
Bitmap-Index
Soll ein Bitmap-Index erstellt werden, können Sie genauso vorgehen wie
bei der Erstellung des B-Tree-Index. Der Index wird aber zunächst nicht
aktiviert, sondern nur gespeichert. Die Umstellung auf den Bitmap-Index
erfolgt über ein Datenbank-Utility �, mit dessen Hilfe die Speicherparameter des Index geändert werden können � (siehe Abbildung 9.32).
Abbildung 9.32 Erstellung eines Bitmap-Index (I)
Beim Anlegen des Index kann entschieden werden, ob ein im ABAP Dictionary definierter Index auch auf der Datenbank physisch erstellt werden
soll. SAP NetWeaver BW stellt dabei drei Optionen alternativ zur Verfügung:
왘
Index auf allen Datenbanksystemen
Der Index soll stets auf der Datenbank angelegt werden.
왘
auf ausgewählten Datenbanksystemen
Der Index wird in Abhängigkeit vom verwendeten Datenbanksystem
angelegt. Bei dieser Option muss angegeben werden, auf welchen Datenbanken der Index angelegt werden soll. Dies kann durch eine Auswahlliste (Liste der DB-Systeme, auf denen der Index angelegt werden
soll) oder eine Ausschlussliste (Liste der DB-Systeme, auf denen der
Index nicht angelegt werden soll) geschehen. In beiden Fällen können
Sie bis zu vier verschiedene DB-Systeme auflisten.
374
1182.book Seite 375 Mittwoch, 4. März 2009 6:38 18
Administration der Indizes
왘
kein Datenbankindex
Der Index wird nicht auf der Datenbank angelegt. Falls Sie diese Option
für einen schon auf der Datenbank angelegten Index wählen, wird der
Index beim Aktivieren von der Datenbank gelöscht.
Hinweis
Ein Unique-Index muss immer auf der Datenbank angelegt werden, da er die
Einfügung doppelter Datensätze verhindert. Zur Gewährleistung der Datenkonsistenz darf ein Unique-Index nicht von der Datenbank gelöscht werden.
In der Administration der Speicherparameter kann über die Schaltfläche
Für Neuanlegen der Speicherparameter für Bitmap-Index = X gesetzt
werden. Mit dem nächsten Neuanlegen wird der Index als Bitmap-Index
erzeugt (siehe Abbildung 9.33). Anschließend muss der Index noch aktiviert werden.
Abbildung 9.33 Erstellung eines Bitmap-Index (II)
In jedem Falle sollte bei zusätzlichen Indizes auf Stammdatentabellen der
Performancegewinn nach Anlegen der Indizes geprüft werden, da zusätzliche Indizes aufgrund des Wartungsaufwands die Ladeperformance der
Stammdaten und den Attributänderungslauf (Change-Run) negativ beein-
375
9.6
1182.book Seite 376 Mittwoch, 4. März 2009 6:38 18
9
Indizes und DB-Statistiken
flussen können. Weitere Informationen für die zusätzliche Indizierung
von Stammdatentabellen finden Sie auch im SAP-Hinweis 402469.
Hinweis
Beachten Sie, dass Bitmap-Indizes keine Sperren auf Datensatzebene unterstützen, sondern nur die gesamte Tabelle, die mit einem Bitmap-Index versehen ist,
bei Datensatzänderungen gesperrt werden kann. Für InfoObjects mit BitmapIndex kann dies den Nachteil bedeuten, dass die Parallelisierung von Datenpaketen bei Ladevorgängen nicht mehr möglich ist.
9.6.3
Index-Qualität überprüfen
In einzelnen Fällen kann es passieren, dass trotz des richtigen Index die
Performance unbefriedigend ist. In solchen Fällen sollten Sie die Qualität
des Index überprüfen. Eine schlechte Index-Qualität kann immer dann
auftreten, wenn Datensätze aus einer Tabelle gelöscht wurden. In diesem
Fall wird der Datensatz auch aus dem Index gelöscht. Der Platz im Indexbaum bleibt leer, bis ein neuer Datensatz genau an diese Stelle eingefügt
wird. Sind sehr viele solcher leeren Plätze vorhanden, müssen beim
Zugriff auf den Index mehr Blöcke gelesen werden, um alle zutreffenden
Datensätze zu finden.
Index-Fragmentierung
Man spricht in solchen Fällen von einer Fragmentierung des Index. Der
Grad der Fragmentierung gibt an, wie gut der Platz in den Blöcken eines
Index genutzt wird: Je kleiner der Anteil des tatsächlich genutzten Platzes
ist, desto fragmentierter ist der Index. Der Index wird dann auch als
»unbalanciert« oder »entartet« bezeichnet. Index-Fragmentierung tritt
meist bei Tabellen mit großen Datenschwankungen auf.
Die Storage-Qualität des Index kann auf verschiedene Weise geprüft werden. In SAP NetWeaver BW existiert hierzu der ABAP Report RSORATAD,
mit dem über die Transaktion SE38 einzelne Indizes untersucht, bzw. der
Report RSORAISQN, mit dem mehrere Indizes gleichzeitig überprüft oder
die Analyse aller Indizes gestartet werden kann.
Das DBA-Cockpit bietet ebenfalls die Möglichkeit, die Index-Qualität zu
analysieren:
Analyse IndexQualität
1. Wechseln Sie in der Transaktion DB02 über das Menü Segments 폷 Detailed Analysis in die Eingabemaske zur Selektion der zu analysierenden Tabelle oder des Indizes (siehe Abbildung 9.34), und geben Sie den
technischen Tabellennamen bzw. Indexnamen ein.
376
1182.book Seite 377 Mittwoch, 4. März 2009 6:38 18
Administration der Indizes
Abbildung 9.34 DBA-Cockpit – Analyse Index-Qualität (I)
Selektieren Sie im anschließenden Bildschirm den zu untersuchenden
Index über die Schaltfläche Select Segments (siehe � in Abbildung 9.35).
Die Berechnung der Index-Qualität wird über die Schaltfläche Validate �
im unteren Bildschirm in der Registerkarte Main Data gestartet �. Das
Analyseprotokoll der Index-Qualität kann im unteren Bildschirm unter
der Registerkarte Storage 폷 Storage Quality abgerufen werden �.
Abbildung 9.35 DBA-Cockpit – Analyse Index-Qualität (II)
377
9.6
1182.book Seite 378 Mittwoch, 4. März 2009 6:38 18
9
Indizes und DB-Statistiken
In dem entsprechenden Bildschirm � wird in der Zeile Index Storage
Quality ein Prozentwert der Index-Qualität angegeben. Ist der angegebene Prozentwert < 70, wird in der Regel die Reorganisation des Index
empfohlen. Bei sehr kleinen Indizes können möglicherweise zu kleine
Prozentwert berechnet werden, obwohl der Index neu reorganisiert
wurde. In diesem Fall sollte auch der Wert Number of blocks (used) überprüft werden. Ist er < 10, empfiehlt es sich, die in den folgenden Ausführungen beschriebene Methode zu benutzen, um die Storage-Qualität zu
ermitteln:
1. Wechseln Sie in der Transaktion DB02OLD über die Schaltfläche Detailed Analysis in die Eingabemaske zur Selektion der zu analysierenden Tabelle, und geben Sie den Tabellennamen ein.
2. Listen Sie im anschließenden Bildschirm über die Schaltfläche Table <->
Indices die Indizes der Tabelle auf, und markieren Sie den zu analysierenden Index.
3. Verzweigen Sie über die Schaltfläche Detailed Analysis in die detaillierte Analyse des Index.
Starten Sie die Berechnung der Index-Qualität über das Menü Analyze
index 폷 Validate structure 폷 Dialog.
Mit dem beschriebenen Verfahren werden die aktuellen Statistiken aus
der Systemtabelle »index_stats« ermittelt. Beachten Sie, dass ein Validate
die Performance des Systems beeinträchtigen kann, da Teile des Index
gegen Updates gelockt sind. Führen Sie diese Kommandos also nicht zu
Zeiten durch, zu denen viele Benutzer auf die entsprechende Tabelle
zugreifen!
Überprüfen Sie nach Durchführung des Validate Structure-Laufs durch
erneutes Aufrufen des Detailed Analysis-Bildschirms in der Rubrik Analysis of B*-tree den Wert Used in tree … without del. rows (siehe
Abbildung 9.36). Dieser Wert gibt die aktuelle Storage-Qualität des Index
wieder und sollte nicht kleiner als 70% sein. Überprüfen Sie zudem in der
Rubrik B*-tree leaf blocks die Werte entries und deleted. Das Verhältnis deleted/entries sollte kleiner als 25% sein.
Wenn die zu überprüfenden Index-Parameter nicht im Rahmen der
genannten Größen liegen, sollten Sie den Datenbankadministrator bitten,
den Index neu aufzubauen. Hinweise zum Neuaufbau der Indizes eines
InfoCubes finden Sie in Abschnitt 9.6.2.
378
1182.book Seite 379 Mittwoch, 4. März 2009 6:38 18
Datenbankoptimierer
Abbildung 9.36 DBA-Cockpit – Analyse Index-Qualität (III)
9.7
Datenbankoptimierer
Die SQL-Anweisung einer Query beschreibt, welche Datenbankobjekte
bei Ausführung der Query zu lesen sind; sie kann aber nicht beschreiben,
wie die Daten auf der Datenbank am besten gefunden werden. Die hierfür
erforderliche Suchstrategie ermittelt eine Instanz in der Datenbank, die als
Datenbankoptimierer bezeichnet wird. Der Datenbankoptimierer ermittelt anhand der SQL-Anweisung die günstigste Suchstrategie und erstellt
hierfür den günstigsten Ausführungsplan. Abbildung 9.37 verdeutlicht
das Problem.
Im vereinfachten Star-Schema-Modell in Abbildung 9.37 soll eine Abfrage
die Menge für Material M6000 im Werk W1030 für den Monat Oktober
2008 finden. Die Abfrage kann auf verschiedenen Wegen zum gewünschten Ergebnis führen. Würde z.B. zunächst in der Zeitdimension der Monat
10.2008 selektiert, müssten zunächst fünf Datensätze in der Faktentabelle
gesucht werden, die dann über die Einschränkung des Materials M6000
und des Werks W1030 einen Datensatz in der Faktentabelle finden.
379
9.7
1182.book Seite 807 Mittwoch, 4. März 2009 6:38 18
Index
A
ABAP Buffer Programm-Puffer
ABAP Dictionary 49
ABAP/HEAP_AREA_DIA 67, 73, 77
ABAP/HEAP_AREA_NONDIA 67, 74, 77
ABAP/HEAP_AREA_TOTAL 73, 74, 77,
223
ABAP/HEAPLIMIT 77
ABAP-Applikationsserver 48
ABAP-Dictionary-Puffer 70
ADK 398
ADK-Archivadministration 405
Advanced Sizing Sizing
Aggregat 34, 501, 504
abschalten 543
Aggregatbaum 539
Aggregationsstufen 504
anlegen 528
auf Festwerten 513
auf Hierarchieknoten 510
auf Merkmalen 504
auf Navigationsattributen 508
auf zeitabhängigen Navigationsattributen 509
auf zeitkonstanten Navigationsattributen
508
automatische Erstellung 519
Bewertung 530
Blockgröße 551
Delta-Verfahren 550
des Hierarchie-/Attributänderungslaufs
545
Dimensionentabelle 505, 519
E-Faktentabelle 505, 536
Faktentabelle 519
F-Faktentabelle 505, 536
Hierarchie-/Attributänderungslauf 508
hochrollen 536
Kennzahlen mit Ausnahmeaggregation
507, 514
Komprimierung 536
Line-Item-Aggregat 517
Line-Item-Dimension 506
manuelle Erstellung 524
Neuaufbau 550
Aggregat (Forts.)
optimieren 522, 524, 541
Roll-up 503, 532, 538
Roll-up-Hierarchie 539, 540
vorschlagen aus BW-Statistik 520, 521
vorschlagen aus Query-Definition 520,
522
Aktivierungs-Queue 155
ALE 659
Alloc fault rate 196
Allocation retries 196
allokierter Speicher 219
Antwortzeit in einem SAP-System
Ausführungszeit 252
Datenbankzeit 252
Dispatcher-Wartezeit 252
Enqueue-Zeit 252
Ladezeit 252
Processing-Zeit 253
Roll-in 252
Roll-out 252
Roll-Wartezeit 252
Anwendungsmonitor Benutzerverteilung 715
Application Link Enabling 659
Applikationsserver 189
Archivdatei 400, 403
Archivierung 398, 399, 404
Archivierung von Anwendungs-Logs
424
Archivierung von Basis-InfoCubes und
DataStore-Objekte 399
Archivierung von Request-Informationen
415
Archivierungsobjekt 398, 401, 406
Archivierungs-Request 404
Archiving Development Kit 398
asynchroner RFC 658
Aufrufer 693
Ausführungsplan 336, 360, 361, 527
Aufbau 361
Full Table Scan 337, 363
Index Full Scan 363
Index Range Scan 338, 364
Index Unique Scan 338, 364
Star-Join-Ausführungsplan 360
807
1182.book Seite 808 Mittwoch, 4. März 2009 6:38 18
Index
Auslagerungsspeicher 68, 222, 223
Ausnahmeaggregation 514
Bezugsmerkmal 515
B
BAPI 660
BAPI-Programmschnittstelle 38
BAPI-Schnittstelle 44
Batch-Manager 664
Benutzerkontext 63, 64, 65, 67, 73, 249
Benutzermodus 236, 255
Betriebssystemkollektor SAPOSCOL 226
Betriebssystemmonitor 226
Bewegungsdaten 686
BEx Analyzer 490
BEx Information Broadcaster 44, 478
BEx Repository Sheet 493
binäre Suche 339
binary search binäre Suche
Binary Tree 341
BI-Systemlastanalyse 261
BI-Systemlastmonitor 261, 283
BI-Trace-Tool 470
Aufzeichnung von Traces 470
CAT-Tool 474
Blade-Server 565
Blade-System Blade-Server
BRCONNECT 385
B-Tree 341, 342
Business Application Programming Interface 44
Business Content 36, 649
Business Explorer 43
Analyzer 43
Query Designer 43
Web Analyzer 43
Web Application Designer 43
Business Warehouse Accelerator 559
Business-Content 313
BW Accelerator Engine 564
BW Statistics 261, 519
BWA Index Maintenance Wizard 576
BWA Business Warehouse Accelerator
BWA-Datenkonsistenz-Checkcenter 602
BWA-Index 560, 562
anlegen 576
ausschalten 577
Change-Run 581
Delta-Index 582
808
BWA-Index (Forts.)
füllen 577, 588
Horizontale Partitionierung 561
Komprimierung 562
löschen 581
Neuaufbau 586
optimieren 582, 588
Roll-up 579
Spaltenbasierte Speicherung 561
Testwerkzeuge 591
BWA-Monitor 575
Einstellung globale Parameter 589
BW-Anwendungsanalyse 726
BW-Statistiken 739
Datenverteilung 727
InfoCube-Design 733
InfoProvider-Verteilung 728
Line-Item-Dimensionen 735
Query-Definition 736
Query-Nutzung 739
Upload-Prozesse 740
BW-Frontend-Checktool 499
BW-Performance-Review 705
BW-Anwendungsanalyse 726
Hardwareanalyse 718
Performanceüberblick 711
Softwareanalyse 707
BW-Systemlast 282
C
Cache-Gültigkeit 452
Cache-Invalidierung 440
Cache-Modus 435, 459
Cache-Parameter 433
Cache-Struktur 448
Cache-Verdrängung 447
Calls 197
CAT-Tool 470, 474
CATT-Trace 474
CCMS 240
CCMS Alert-Monitor 241
Change-Log 155
Change-Run 545, 547, 548
Delta-Verfahren 550
parallel 555
Checkliste
BW-Anwendungsanalyse 741
Hardware 724
Performanceüberblick 717
1182.book Seite 809 Mittwoch, 4. März 2009 6:38 18
Index
Checkliste (Forts.)
Softwareanalyse 710
Clustering 618
Clustering-Index 622
Index-Clustering 618
Mehrdimensionales Clustering (MDC)
619
Clustering-Index 622
Cost-based Optimizer 380, 382
CPU-Auslastung 227
CPU-Engpass 227
CPU-Kapazität 228
CPU-Zeit 253
CSV-Format 650
CUA Buffer 71
D
Data Buffer 193
Data Warehouse 27, 32
Architektur 32
Frontend 35, 44
Data Warehousing Workbench 36
Data-Mart-Benchmark 99
DataMart-Interface 649
DataProvider 493
DataSource 652, 654, 656
3.x DataSource 654
7.0 DataSource 655
DataStore-Objekt 40, 636
Clustering 637
Eindeutige Datensätze 639
Eintellung der Laufzeitparameter 641
Indizierung 638
Standard-DataStore-Objekt 155
Unterdrückung Optimizer-Statistiken
640
Vermeidung der SID-Ermittlung 636
Data-Warehouse-Management 647
Datenarchivierungsprozess 399, 400,
401
Datenbank
Index 35, 331
Statistik 331
Datenbankinstanz 190
Datenbankmonitor 190
Datenbankoptimierer 334, 336, 379
Cost-Based Optimizer 380
Rule-based Optimizer 380
Datenbankpuffer 191, 205
Datenbankserver 190
Datenbank-View
RSDDSTAT_OLAP 278
Datenbankzeit 250, 252
Datenbewirtschaftung 647
Datenextraktion 38, 647, 649, 650, 651,
669
aus flachen Dateien 650
aus Fremdsystemen 651
aus multidimensionalen Datenbanken
650
aus relationalen Datenbanken 650
aus SAP-Systemen 649
Hauptspeicherbedarf 669
Daten-IDoc 675, 679, 696
Datenpaket 606, 666, 669, 679, 681,
682, 696
Datenpaketgröße 667, 668, 670
Pflege 670
Datenpaketnummer 661
Datenpufferqualität 195
Datentransferprozess 677
Debugging 704
Simulation 701
Datentransferprozess (DTP) 655
Datenwürfel 29, 33, 34
DB Connect 38, 650
DB_BLOCK_BUFFERS 194
DB_BLOCK_SIZE 194, 196
DB_CACHE_SIZE 194
DBA-Einplanungskalender 211, 386
DB-Laufzeit 307
DB-Parameter 211
DB-Statistiken 331, 382
Administration 384
BRCONNECT 385
DBA-Einplanungskalender 386
UPDATE STATISTICS 384, 388, 391
Debug-Optionen 462
Delta-Cache 441
Gruppierung 442
Delta-Index 582
Design Items 493
DIAG-Protokoll 491
Dialog-Workprozess 72, 73
Dimensionen-ID 348, 684
Dimensionentabelle 40, 348, 684, 686
Dispatcher 248
809
1182.book Seite 810 Mittwoch, 4. März 2009 6:38 18
Index
DSO DataStore-Objekt
DSO-Objekt
Aktive Daten 155
Aktivierungs-Queue 155
Change-Log 155
DTP 677
E
E-Faktentabelle 349, 606
EM/BLOCKSIZE_KB 76
EM/INITIAL_SIZE_MB 65, 72, 76, 218
Enqueue-Zeit 251, 252
Enterprise Core Component 25
Erst-Sizing Sizing
ESM-Puffer Export/Import-Puffer
ETL-Prozess 33, 647
Execution Plan Ausführungsplan
Expertenmodus Benutzermodus
Expert-Sizing Sizing
Export/Import-Puffer 216
Export-DataSource 649
Extended Memory 218, 237
externer Modus 63
Extraktion 647, 660
Extraktionsstruktur 38, 649
Extraktor 656, 657
anwendungsspezifisch 656
anwendungsunabhängig 657
Extraktorprogramm 649
Extraktstruktur 654, 656
F
Faktentabelle 40, 348, 683
E-Faktentabelle 349
F-Faktentabelle 349
Festplattenkapazität 101
F-Faktentabelle 349, 606
flacher Index 572, 588
flaches Aggregat Line-Item-Aggregat
Flatfile 650, 672
Flatfile-Daten 38
Frontend-Laufzeit 309
Full Table Scan 203, 337, 363
810
G
Generic Key Buffer 71
globale Benutzerübersicht 715
GUI-Zeit 250
H
Hardwareanalyse 718
CPU-Auslastung 719
Datenbankperformance 721
Datenbankwachstum 722
Hardwareprofil 718
Speicherauslastung 720
Hauptindex 582
Hauptspeicher 219
Hauptspeicher-Cache 432
Heap Memory 218, 237
Hierarchie 39
Hierarchie-/Attributänderungslauf 545
Parametrisierung 547
Überwachung 549
Histogramm 381
Hit 193
Hitratio 193
I
I/O-Engpass 229, 721
ICF 50
ICF-Service 51, 52
ICM 50
ICM-Monitor 53
ICM-Profilparameter 54
IDoc 679, 691
IDoc-Status 695
ILM 396
Import-/Export-Puffer 71
Index 35, 331, 335
Administration 366
B*-Tree-Index 343
Bitmap-Index 344, 353, 356
B-Tree-Index 341, 342, 352, 353
Clustering-Index 352
Encode Vector Index 351
fehlende Indizes 368
Feinanalyse Index-Qualität 378
Fragmentierung 376
Grobanalyse Index-Qualität 376
1182.book Seite 811 Mittwoch, 4. März 2009 6:38 18
Index
Index (Forts.)
Index-Qualität 376
Indexschema 350
Indizierungsschema 347
löschen 372
Neuaufbau 372, 378
P-Index 335, 350, 352, 608
Primärindex 335
Radix-Index 351
Reparatur 373
Sekundärindex 335
Tabellen-Index 341
überprüfen 367
Unique-Index 335
Index Full Scan 363
Index Range Scan 338, 364
Index Unique Scan 338, 364
InfoCube 29, 40
E-Faktentabelle 606
F-Faktentabelle 606
Komprimierung 605, 607
Partitionierung 609
providerspezifische Eigenschaften 632
Info-IDoc 660, 675, 679, 690, 694
Info-IDoc-Status 694, 695
InfoObject 39
InfoPackage 655
InfoProvider 40
Information Lifecycle Management 396
InfoSet 40, 41
InfoSpoke 649
Intermediate Document 660, 691
interner Modus 63
Internet Communication Framework 50
Internet Communication Manager 50
Internet-Communication-FrameworkService 51
J
J2EE-Applikationsserver 48
Java Database Dictionary 49
K
Kardinalität 344, 353
Kennzahl 39
Kommunikationsschnittstellen 647, 648
Kommunikationsstruktur 654
Kommunikationstechniken 657
Komprimierung 605, 607
Kontextwechsel 64, 65
L
Lade-Request 689, 690
Gesamtstatus 692
Kopfdaten 689
Statusinformationen 691
Ladezeit 249
Leaf-Block 344
Leaf-Row 344
Lesemodus 454
Line-Item-Aggregat 517
Line-Item-Dimension 127, 353, 517
Local Memory 62
Log Buffer 196
Logical Unit of Work 659
logischer Index BWA-Index
Long table scans 203
LUW Logical Unit of Work
M
MDC-Dimension 619, 620, 622, 623
MDX 44, 428
MDX-Prozessor 429
Memory/Disk Sort 204
Memory-Management-Monitor 68
Merkmal 39, 41
Metadaten 42
Management 42
Metadaten-Repository 42
Mixed-Load-Benchmark 101
Moduskontext 63
Monitoring 688
Datenextraktion 689
Datentransferprozesse (DTP) 698
Multidimensional Expression 44, 428
multidimensionale Datenhaltung 29
MultiProvider 40, 41, 480, 632
feste Adressierung von InfoProvidern
486
heterogene 168
heterogene MultiProvider 482
homogene MultiProvider 167, 481
MultiProvider-Queries analysieren 483
parallele Verarbeitung 482
811
1182.book Seite 812 Mittwoch, 4. März 2009 6:38 18
Index
MultiProvider (Forts.)
Selektion durch Festwerte 487
Selektion durch Kennzahlen 486
Selektion durch OLAP-Hints 488
sequentielle Verarbeitung 483
MultiProvider-Partitionierung 632
N
Nametab-Puffer 70
Nearline-Speicherung 396, 398
Nicht-Dialog-Workprozess 72, 73
NLS-API 396
Normalform 32
Nummernkreis 684
Nummernkreisobjekt 684
Nummernkreispuffer 684
O
ODBO 428
ODBO-Schnittstelle 44
OLAP 29, 31
Datenhaltung 29
OLAP-Cache 306, 308, 309
OLAP-Laufzeit 309
OLAP-Prozessor 281
OLAP-BAPI 44, 428
OLAP-Cache 431, 433
Cache-Gültigkeit 452
Cache-Invalidierung 440
Cache-Modus 435
Cache-Parameter 433
Cache-Struktur 448
Cache-Verdrängung 447
Delta-Cache 441
globaler Cache 431
Hauptspeicher-Cache 432
lokaler Cache 431
OLAP-Cache-Monitor 444
Persistenter Cache 434
Persistenz-Modus 436
OLAP-Cache-Monitor 444
OLAP-Hints 488
OLAP-Prozessor 427, 429
OLAP-System 31, 32
OLE DB for OLAP 44
OLE DB für OLAP ODBO
OLTP 31
812
OLTP-System 31, 32
Online Analytical Processing OLAP
Online Transaction Processing 31
Open Analysis Interface 428
Open Hub Destination 649
Open Hub Service 649
Open SQL 49
Open SQL for Java 49
Optimierungsmodus 460
P
Page-Speicher 237
Paging Area 217
Paging-Datei Auslagerungsspeicher
Parses 198
Partitionierung 34, 167, 356, 609
auf Applikationsebene 167, 631
auf Datenbankebene 610
Clustering 618
E-Faktentabelle 613
Einstellung 614
Einstellung der Datenverteilung 633
F-Faktentabelle 611
logische 34
logische Partitionierung 631
Maximalzahl an Partitionen 615
Partition 34
Partitionierungsmerkmal 610, 632
Partitionierungsschema 613, 617, 624
physiche Partitionierung 34
Range-Partitionierung 610, 611
von Aggregaten 617
Partitionierungsmerkmal 355
Performanceüberblick 711
ABAP-Laufzeitfehler (Dumps) 714
Allgemeine Systemlast 711
Benutzeranzahl 715
BW-Systemlast 712
Persistent Staging Area (PSA) 41, 655,
660, 679
Persistenter Cache 434
Persistenz-Modus 436
PGA Program Global Area
Physical Reads 193
physischer Index BWA-Index
P-Index 608
Plug-in 649
Primärindex 335
1182.book Seite 813 Mittwoch, 4. März 2009 6:38 18
Index
privater Speicher 65
PRIV-Mode 66, 73
Processing-Zeit 253
Program Global Area 192, 204
Sort Buffer 193
Programm-Puffer 71, 215
PSA 41, 660, 681, 696
Verarbeitungsoptionen 680
PSAPTEMP 208
PSA-Tabellen 644, 661
Löschen von Requests 644
Partitionierung 645
Q
qRFC queued RFC
Quellsystem-Typen 648
Query-Eigenschaften 453
Query-Monitor 336, 360, 383, 452, 462,
525
Cache-Modus 459
Debug-Optionen 462, 525
Lesemodus 454
MultiProvider-Queries analysieren 483
Optimierungsmodus 460
Performance-Informationen 466
Query-Eigenschaften 453
Request-Status 461
technische Informationen 467
queued RFC 659
R
Range-Partitionierung 610
RDISP/PG_MAXFS 70
RDISP/PG_SHM 70
RDISP/ROLL_MAXFS 76
RDISP/ROLL_SHM 76, 218
Reads 193
Rechner 189
Redo Log Buffer 196
Remote Function Call RFC
Repartitionierung 623, 625
Monitoring 629
vollständige Repartitionierung 625
von Aggregaten 629
Zusammenfassen und Anhängen von Partitionen 628
Reportingperformance 427
Repository-Puffer 70
Request 539
Request-ID 533, 534, 536, 538, 605,
661, 689
Request-Status 461
Re-Sizing Sizing
RFC 657, 679
asynchroner RFC 658
queued RFC 659
synchroner RFC 658
transaktionaler RFC 659
Roll Area 217
Roll-back 197
Roll-in 65, 252
Roll-out 65, 252
Roll-Speicher 218, 237
Roll-up 532, 537
automatisch 538
manuell 538
überwachen 543
Roll-up-Hierarchie 539, 540
Roll-up-Job 543
Root-Block 344
Roundtrip 250, 491
RSDDSTAT_DM 306
RSDDSTAT_OLAP 278, 306
RSMO-Monitor 689
Rule-based Optimizer 380
S
SAP Application Performance Standard
(SAPS) 99
SAP BW Reporting Agent 478
SAP ECC 6.0 25
SAP Executable Buffer Programm-Puffer
SAP Extended Memory 63, 65
SAP GoingLive Check 88
SAP GUI 47
SAP Heap Memory 65, 67, 71
SAP NetWeaver Application Server 47,
48
SAP NetWeaver Application Server ABAP
49
SAP NetWeaver Application Server Java
49
SAP Paging Memory 70
SAP Quick Sizer 87, 88
813
1182.book Seite 814 Mittwoch, 4. März 2009 6:38 18
Index
SAP Roll Memory 63, 71
SAP Service Marketplace 87, 88, 98
SAP Solution Manager 243
SAP Special Expertise Partner 569
SAP-Enqueues 251
SAP-Erweiterungsspeicher 63, 65, 71,
72, 73
SAP-GUI-Puffer 71
SAP-Instanz 189
SAP-Kalenderpuffer 71
SAP-Memory-Management-Monitor
212, 218, 219
SAP-Memory-Managementsystem 71
SAP-Paging Memory 223
SAP-Performancemonitor 187
SAP-Profilparameter 69, 75, 77
SAP-Puffer 70, 214
SAP-Pufferqualität 214
Hitratio 214
SAP-Rollbereich 63, 64
globaler SAP-Rollbereich 64
lokaler SAP-Rollbereich 64
SAP-Rolldatei 64
SAP-Speicherbereiche 61, 69, 212, 217
SAP-Speichermanagement 63
SAP-Systemlastanalyse 247, 257
SAP-Workprozess 231
SAP-Workprozess-Monitor 233
SAP-Workprozess-Typen 232, 257
Screen Buffer 71
Sekundärindex 335
Selektionsschema 401
Semantische Gruppe 402
Server-Blade Blade-Server
Service Packages 706
Service-Ingenieur-Modus Benutzermodus
SGA System Global Area
Shared Buffer 71
Shared Memory 62
Shared Pool 195, 198
SHARED_POOL_SIZE 195, 197
Short table scans 203
SID-Schlüssel 348, 687
SID-Tabelle 686, 687
Simple Object Access Protocol 651
Single Record TableBuffer 71
Sizing 82, 108
Advanced Sizing 84
Datenwachstum 103
814
Sizing (Forts.)
Delta-Sizing 85
Dimensionentabellen 101
Erst-Sizing 84
Expert-Sizing 84
Faktentabelle 102
Festplattenkapazität 101
InfoCubes 101
Re-Sizing 85
SAP GoingLive Check 88
SAP Quick Sizer 87
Sizing-Prozess 87
Upgrade-Sizing 85
SOAP Simple Object Access Protocol
Softwareanalyse 707
SAP NetWeaver BW 708
SAP-Frontend 708
SP-Stack Support Package Stack
Stammdaten 39, 41, 686
Star-Schema 40, 347
Suchalgorithmus binäre Suche
Support Package 55, 57
Support Package Manager 58
Support Package Stack 57, 58
Swapping 68
Swaps 215
Swap-Space Auslagerungsspeicher
synchroner RFC 658
System Global Area 191, 204
Data Buffer 192
Java Pool 192
Large Pool 192
Log Buffer 192
Redo Buffer 192
Shared Pool 192
Streams Pool 192
Systemlastmonitor 253, 254, 255, 258,
281
T
Tabellen-Puffer 71
Table Scan 203
Technischer Content 312, 591
Übernahme des Technischen Contents
322
Text 39
Text Retrieval and Information Extraction
TREX
transaktionaler RFC 659
1182.book Seite 815 Mittwoch, 4. März 2009 6:38 18
Index
Transfermethoden 679
IDoc 679
PSA 679, 680
Transformation 647
TREX 563
Revision 565
tRFC 659, 679
W
U
XML for Analysis 44, 428
XML/A 428
XML/A-Schnittstelle 44
XML-Daten 38, 651
Übertragungsregeln 654
Übertragungstechniken 647, 659, 660
Application Link Enabling 659
Intermediate Document 660
UD Connect 38, 650
UNION-Operation 41
Unique-Index 335
V
Verbuchungssimulation 701
VirtualProvider 40, 41
virtueller Speicher 62
Workload-Kollektor-Datenbank 256
Workprozess SAP-Workprozess 231
Workprozess-Monitor 233
X
Z
Zeitscheibenarchivierung 401
zentraler Überwachungsmonitor CCMS
Zero Administration Memory Management 75
ZTTA/ROLL_AREA 64, 74, 76
ZTTA/ROLL_EXTENSION 76
ZTTA/ROLL_FIRST 76
815
Herunterladen