Show TOC

Performance von Navigationsattributen in Queries und WertehilfenLocate this document in the navigation structure

Verwendung

Vom Gesichtspunkt der Performance sollten Sie ein Objekt vorzugsweise mit einem Merkmal statt mit einem Navigationsattribut modellieren. Die Gründe dafür sind die folgenden:

  • Navigationsattribute liegen im erweiterten Sternschema eines InfoCubes einen Join weiter außen als Merkmale. Das bedeutet, dass eine Query mit einem Navigationsattribut einen zusätzlichen Join (im Vergleich zu einer Query mit demselben Objekt als Merkmal) ausführen muss, um an die Werte zu kommen. Dasselbe gilt im übrigen auch für DataStore-Objekte.

  • Weiterhin werden aus demselben Grund Einschränkungen auf bestimmte Werte des Navigationsattributs (die in der Query definiert wurden) unter Umständen vom jeweiligen Datenbankoptimierer bei der Erstellung des Ausführungsplanes nicht berücksichtigt. Dies kann zu nicht-optimalen Ausführungsplänen führen, insbesondere dann, wenn die Einschränkungen sehr selektiv sind. In den meisten Fällen können Sie dieses Problem dadurch beseitigen, dass Sie das Navigationsattribut in den entsprechenden Stammdatentabellen indizieren (siehe unten).

  • Wird ein Navigationsattribut in einem Aggregat verwendet, dann muss dieses Aggregat per Änderungslauf angepasst werden, sobald neue Werte für dieses Navigationsattribut geladen werden (Laden von Stammdaten des zum Navigationsattribut gehörenden Merkmals). Dieser Änderungslauf gehört in der Regel zu den Performance-kritischen Prozessen in einem produktiven BW-System. Daher kann man durch Vermeidung von Navigationsattributen bzw. durch Nicht-Verwendung von Navigationsattributen in Aggregaten die Performance dieses Prozesses verbessern. Allerdings kann die Nicht-Verwendung von Navigationsattributen in Aggregaten zu schlechterer Query-Antwortzeit führen. Hier muss der Modellierer die geeignete Balance finden.

Zusätzliche Indizierung

Um die Performance von Queries mit Navigationsattributen zu verbessern, kann es ratsam sein, manuell zusätzliche Indizes auf Stammdatentabellen anzulegen. Eine typische Situation ist in etwa die folgende: Es gibt Performance-Probleme bei der Auswahl von Merkmalswerten, z.B.

  • in BEx Queries, die Navigationsattribute enthalten, wobei die zugehörige Stammdatentabelle groß ist (z.B. mehr als 20000 Einträge); in der Regel existiert eine Einschränkung auf den Navigationsattributen.

  • bei der Wertehilfe auf einem solchen Navigationsattribut.

Beispiel

Sie wollen die Performance des Navigationsattributs A des Merkmals C verbessern, A haben Sie auf bestimmte Werte eingeschränkt. Ist A zeitunabhängig, dann müssen Sie die X-Tabelle von C (d.h. /BI0/XC bzw. /BIC/XC) betrachten. Ist A zeitabhängig, handelt es sich um die Y-Tabelle von C (d.h. /BI0/YC bzw. /BIC/YC). In dieser Tabelle existiert eine Spalte S__A (A = Navigationsattribut). Auf dieser Spalte sollten Sie einen zusätzlichen Datenbank-Index anlegen, z.B. über das ABAP Dictionary: Anfang des Navigationspfads SAP Easy Access Nächster Navigationsschritt Werkzeuge Nächster Navigationsschritt ABAP Workbench Nächster Navigationsschritt Entwicklung Nächster Navigationsschritt Dictionary Ende des Navigationspfads.

Hinweis

In jedem Falle sollten Sie danach verifizieren, ob der von Ihnen neu angelegte Index wirklich zu einer Performanceverbesserung geführt hat. Falls nicht, dann sollten Sie den Index wieder löschen, da sinnlose Indizes aufgrund des Wartungsaufwands ungünstig für die Ladeperformance (in diesem Falle das Laden von Stammdaten) oder den Änderungslauf sein können.