Essbase-Caches und Berechnungsperformance

Um die Berechnungsperformance zu optimieren, insbesondere für große Berechnungen, verwendet Essbase Caches, um die Speichernutzung zu koordinieren. Stellen Sie sicher, dass der Rechnercache bei Verwendung groß genug ist, um Berechnungen zu optimieren. Prüfen Sie, wie der Indexcache, der Datencache, der dynamische Rechnercache und der Anwendungscache relevant sein können.

Bei der Berechnung eines Cubes verwendet Essbase ungefähr 30 Byte Arbeitsspeicher pro Element in der Modellstruktur. Wenn der Cube also 5.000 Elemente enthält, benötigt Essbase etwa 150 KB Arbeitsspeicher, um ihn zu berechnen.

Hinweis:

Sie können eine übermäßige Speicherbelegung vermeiden, indem Sie Berechnungsskripte kombinieren. Sie können eine gute Performance erzielen, indem Sie die parallele Berechnung mit einem einzelnen Berechnungsskript verwenden. Siehe Parallele Berechnung verwenden.

Essbase verwendet Speicher, um die Berechnungsperformance zu optimieren, insbesondere bei großen Berechnungen. Die belegte Speichermenge kann nicht gesteuert werden, es sei denn, die Größe der Cube-Modellstruktur wird geändert. Sie können jedoch sicherstellen, dass die Speichercachegrößen Essbase aktivieren, um die Berechnung zu optimieren.

Essbase verwendet die folgenden Caches, um die Speichernutzung zu koordinieren:

  • Rechnercache.

    Wenn Sie zum ersten Mal einen Cube berechnen, ist die Größe des Rechnercaches für die Berechnungsperformance von Bedeutung. Stellen Sie nach Möglichkeit sicher, dass der Rechnercache groß genug ist, damit Essbase die Option für den optimalen Rechnercache verwenden kann.

    Lesen Sie dazu Size the Calculator Cache.

  • Dynamischer Rechnercache. Weitere Informationen finden Sie unter Größe der dynamischen Rechnercaches festlegen.

  • Indexcache. Wenn der Cube groß ist, ist der Default-Indexcache nicht groß genug, um eine optimale Berechnungsperformance zu gewährleisten. Hierzu wird auf die Anwendungskonfigurationseigenschaft INDEXCACHESIZE oder auf MaxL alter database set index_cache_size verwiesen.

  • Datencache. Hierzu wird auf die Anwendungskonfigurationseigenschaft DATACACHESIZE oder auf MaxL alter database set data_cache_size verwiesen.

  • Datendateicache.

  • Anwendungscache. Wenn der Hybridmodus in Block Storage Cubes verwendet wird, kann der Anwendungscache Ihnen helfen, die Speicherauslastung für Abrufe zu verwalten. Der Anwendungscache ähnelt dem Aggregate Storage-Cache. Weitere Informationen finden Sie unter Aggregate Storage Cache.

Größe des Rechnercaches festlegen

Die beste Größe für den Essbase-Rechnercache hängt von der Anzahl und Dichte der dünn besetzten Dimensionen in der Modellstruktur ab. Wenn Sie das Rechnercache-Bitmap verstehen, können Sie den Rechnercache optimal skalieren.

Um die Blockverwaltung zu optimieren, kann Essbase eine Bitmap erstellen, deren Größe von der Größe des Rechnercaches gesteuert wird, um Datenblöcke während einer Berechnung aufzuzeichnen und zu verfolgen. Die Bitmap ist eine schnellere Abrufmethode für Essbase als Datenträger-I/O, insbesondere wenn Sie einen Cube zum ersten Mal berechnen oder einen Cube mit dünn besetzten Daten berechnen.

Essbase verwendet das Rechnercache-Bitmap, wenn die Datenbank mindestens zwei dünn besetzte Dimensionen aufweist und eine dieser Bedingungen ebenfalls erfüllt ist:

  • Sie berechnen mindestens eine vollständige Sparse-Dimension.

  • Sie geben den Befehl SET CACHE ALL in einem Berechnungsskript an.

Info zum Rechnercache-Bitmap

Für den Rechnercache trennt Essbase dünn besetzte Dimensionen in zwei Gruppen:

  • Bitmap-Dimensionen: Die dünn besetzten Dimensionen, die Essbase in das Bitmap einfügt, bis es voll ist. Jede Elementkombination der dünn besetzten Dimensionen in der Bitmap belegt 1 Bit Speicher. Es muss genügend Platz in der Bitmap vorhanden sein, damit jede Elementkombination einer dünn besetzten Dimension in der Bitmap platziert wird.

  • Anchoring-Dimensionen: Die verbleibenden dünn besetzten Dimensionen im Datenbank-Outline, die nicht in das Bitmap passen.

Essbase beginnt mit der ersten dünn besetzten Dimension in der Modellstruktur und passt so viele wie möglich in die Bitmap. Die passenden Dimensionen sind die Bitmap-Dimensionen. Da der Rechnercache die Größe der Bitmap steuert, hängt die Anzahl der Sparse-Dimensionen, die passen können, von der Größe des Rechnercaches ab.

Die restlichen Sparse-Dimensionen sind die Verankerungsmaße. Bei Verankerungsdimensionen kann Essbase das Bitmap nicht verwenden, um zu bestimmen, ob Blöcke vorhanden sind.

Um zu sehen, welche Dimensionen Verankerungsdimensionen sind und welche Bitmapdimensionen sind, verwenden Sie den Berechnungsbefehl SET MSG DETAIL, um Bitmapinformationen im Anwendungslog anzuzeigen.

Ordnen Sie die dünn besetzten Dimensionen in Ihrem Outline sorgfältig an, damit möglichst viele Dimensionen in das Bitmap eingefügt werden können. Beginnen Sie mit der Dimension, die die wenigsten Elemente enthält, und fahren Sie fort, bis die Dimension mit den meisten Elementen die letzte ist. Diese Reihenfolge ermöglicht es mehr Dimensionen in die Bitmap zu passen und führt zu einer verbesserten Berechnungsperformance.

Hinweis:

Die Reihenfolge der dünn besetzten Dimensionen im Outline wirkt sich auch auf die Abfrageperformance aus. Weitere Informationen finden Sie unter Modellstruktur zur Optimierung der Performance entwerfen.

Essbase verwendet ein einzelnes Bitmap, wenn mehrere Verankerungsdimensionen vorhanden sind (oder wenn der Rechnercache nicht groß genug ist, um mehrere Bitmaps zu unterstützen), und verwendet mehrere Bitmaps, wenn eine Verankerungsdimension vorhanden ist. Eine einzelne Bitmap verwendet den geringsten Speicher, ist aber weniger effizient als mehrere Bitmaps.

Mehrere Bitmaps benötigen mehr Speicher, sind jedoch schneller als die Verwendung einer einzelnen Bitmap. Eine Bitmap verfolgt untergeordnete Blöcke und eine verfolgt übergeordnete Blöcke. Die Performanceverbesserung ist besonders hoch, wenn Sie die Datenbank zum ersten Mal berechnen.

Die Anzahl der verwendeten Bitmaps wird durch die maximale Anzahl abhängiger übergeordneter Elemente für alle Elemente in der Verankerungsdimension bestimmt. Ein Element hat ein abhängiges übergeordnetes Element, es sei denn, es verfügt über ein gemeinsames Element. Betrachten Sie beispielsweise die Dimension {\b Product} der Datenbank {\b Sample.Basic}. Das Mitglied Cola (100-10) hat ein Elternteil, Colas (100). Diet Cola (100-20) hat jedoch zwei Elternteile, Diätgetränke (Diät) und Colas (100). Keine Mitglieder des Produkts haben mehr als zwei abhängige Eltern. Wenn also "Produkt" die Verankerungsdimension ist, sind die maximal abhängigen übergeordneten Elemente zwei.

Essbase wählt eine von drei Optionen für die Berechnung aus, wie in der folgenden Tabelle dargestellt:

Tabelle 34-2: Rechnercacheoptionen

Option Methode Performancebewertung

1

Einzelverankerungsdimension, mehrere Bitmaps

1

2

Einzelverankerungsdimension, Einzel-Bitmap

2

3

Mehrere Verankerungsdimensionen, einzelnes Bitmap

3

Essbase wählt die optimale Performancemethode für eine Berechnung basierend auf der Größe des Rechnercaches aus. Wenn die Rechnercachegröße für eine der oben genannten Optionen zu klein ist, verwendet Essbase keinen Rechnercache. Die Rechenleistung kann erheblich beeinträchtigt werden.

Wenn Sie die parallele Berechnung aktivieren, kann sich ändern, welche Option für den Rechnercache verwendet wird. Siehe Beziehung zwischen paralleler Berechnung von CALCPARALLEL und anderen Essbase-Features.

Achtung:

Wenn Sie die Datenbank zum ersten Mal berechnen, ist die Größe des Rechnercaches für die Berechnungsperformance besonders wichtig. Stellen Sie nach Möglichkeit sicher, dass der Rechnercache groß genug ist, damit Essbase die Option für den optimalen Rechnercache verwenden kann.

Rechnercachegröße bestimmen

Die optimale Größe des Rechnercaches hängt vom verfügbaren Speicher des Systems sowie von Art und Konfiguration des Cubes ab.

Mit der folgenden Formel können Sie die Rechnercachegröße berechnen, die für Essbase erforderlich ist, um jede der drei Optionen in der Tabelle Rechnercacheoptionen oben auszuwählen:

Calculator cache = Bitmap size in bytes * Number of bitmaps

Dabei gilt:

Bitmap size in bytes = Max ((member combinations on the bitmap dimensions / 8), 4)

und wobei

Number of bitmaps = Maximum number of dependent parents in the anchoring dimension + 2 constant bitmaps

Hinweis:

Die minimale Bitmap-Größe beträgt 4 Byte. Wenn (Elementkombinationen in den Bitmap-Dimensionen/8) kleiner als 4 Byte ist, verwendet Essbase eine Bitmap-Größe von 4 Byte.

Betrachten Sie einen Beispielwürfel mit fünf dünn besetzten Dimensionen (S1 bis S5):

Tabelle 34-3 Beispiel: Beispiel-Cube mit fünf dünn besetzten Dimensionen

Sparse-Dimension Anzahl von Mitgliedern Angehörige/Eltern

S1

20

Nicht zutreffend

S2

20

Nicht zutreffend

S3

50

Nicht zutreffend

S4

50

Nicht zutreffend

S5

200

3

Verwenden Sie diesen Beispiel-Cube für die folgenden Beispielberechnungen:

  • Option 1: Single Anchoring Dimension, mehrere Bitmaps
  • Option 2: Single Anchoring Dimension, Single Bitmap
  • Option 3: Mehrere Ankerdimensionen, einzelnes Bitmap

Option 1: Single Anchoring Dimension, mehrere Bitmaps

Nehmen Sie für diese Beispielberechnung die folgenden Fakten zu einer Datenbank an:

  • Bitmap-Dimensionen: S1, S2, S3, S4

  • Verankerungsmaß: S5

  • Abhängige Eltern in Verankerungsdimension: 3

Führen Sie die folgende Berechnung aus:

Bitmap size in bytes = (S1 * S2 * S3 * S4) / 8
                     = (20 * 20 * 50 * 50) / 8
                     = 125,000 bytes

Number of bitmaps = Maximum number of dependent parents in the anchoring dimension
                  = + 
                  = 2 constant bitmaps
                  = 3 + 2
                  = 5

Calculator cache = Bitmap size * Number of bitmaps
                 = 125,000 * 5
                 = 625,000 bytes

Damit Essbase mehrere Bitmaps für diese Datenbank mit einer Verankerungsdimension verwenden kann, muss der Rechnercache 625.000 Byte groß sein.

Option 2: Single Anchoring Dimension, Single Bitmap

Nehmen Sie für diese Beispielberechnung die folgenden Fakten zu einer Datenbank an:

  • Bitmap-Dimensionen: S1, S2, S3, S4

  • Verankerungsmaß: S5

  • Abhängige übergeordnete Elemente in Verankerungsdimension: Nicht anwendbar

Führen Sie die folgende Berechnung aus:

Bitmap size in bytes = (S1 * S2 * S3 * S4) / 8
                     = (20 * 20 * 50 * 50) / 8
                     = 125,000 bytes

Number of bitmaps = Single bitmap
                  = 1

Calculator cache = Bitmap size * Number of bitmaps
                 = 125,000 * 1
                 = 125,000 bytes

Damit Essbase ein einzelnes Bitmap für diese Datenbank mit einer Verankerungsdimension verwenden kann, muss der Rechnercache 125.000 Byte groß sein.

Option 3: Mehrere Ankerdimensionen, einzelnes Bitmap

Nehmen Sie für diese Beispielberechnung die folgenden Fakten zu einer Datenbank an:

  • Bitmap-Dimensionen: S1, S2, S3

  • Verankerungsmaße: S4, S5

  • Abhängige übergeordnete Elemente in Verankerungsdimensionen: Nicht anwendbar

Führen Sie die folgende Berechnung aus:

Führen Sie die folgende Berechnung aus:

Bitmap size in bytes = (S1 * S2 * S3) / 8
                     = (20 * 20 * 50) / 8
                     = 2,500 bytes

Number of bitmaps = Single bitmap
                  = 1

Calculator cache = Bitmap size * Number of bitmaps
                 = 2,500 * 1
                 = 2,500 bytes

Damit Essbase ein einzelnes Bitmap für diese Datenbank mit mehreren Verankerungsdimensionen verwenden kann, muss der Rechnercache 2.500 Byte groß sein.

Die folgende Tabelle zeigt, welche Berechnungscacheoption Essbase je nach angegebener Rechnercachegröße verwendet:

Tabelle 34-4: Auswahl der Rechnercacheoption basierend auf der Rechnercachegröße

Angegebene Mindestgröße Option gewählt

625,000 bytes (Bytedatentyp)

Option 1 (bietet optimale Leistung)

125,000 bytes (Bytedatentyp)

Option 2

2.500 ByteFußnote 1

Option 3

Fußnote 1

Wenn Sie eine Rechnercachegröße von weniger als 2.500 Byte angeben, verwendet Essbase während der Berechnung keinen Rechnercache. Die Rechenleistung kann erheblich beeinträchtigt werden.

Mit dem Befehl SET MSG SUMMARY in einem Berechnungsskript können Sie prüfen, welche Berechnungscacheoption Essbase verwenden kann. Führen Sie das folgende Berechnungsskript für den leeren Cube aus:

SET MSG SUMMARY;
CALC ALL;

Essbase zeigt die Rechnercacheeinstellung im Anwendungslog an. Siehe SET-Befehle für Berechnungstests und Statistiken.

Die maximale Rechnercachegröße, die Sie angeben können, beträgt 200.000.000 Byte. Der Standardwert beträgt 200,000 Byte. Die gewählte Rechnercachegröße hängt vom verfügbaren Speicher und der Konfiguration des Cubes ab.

Hinweis:

Die Größe des Rechners, des Indexes, der Datendatei und der Datencaches wirkt sich in der Regel stärker auf die Performance aus, wenn die Berechnung mehr auf Aggregationen und weniger auf Formelberechnungen basiert.

Wenn Sie den Cube zum ersten Mal berechnen, ist die Größe des Rechnercaches besonders wichtig. Stellen Sie nach Möglichkeit sicher, dass der Rechnercache groß genug ist, damit Essbase Option 1 verwenden kann.

Sie können die Standardgröße für den Rechnercache verwenden oder die Größe des Rechnercaches in einem Berechnungsskript festlegen. Wenn Sie die Größe aus einem Berechnungsskript festlegen, wird diese Einstellung nur für die Dauer des Berechnungsskripts verwendet. Siehe den Berechnungsskriptbefehl SET CACHE und die Konfigurationseinstellung CALCCACHE.

Größe der dynamischen Rechnercaches festlegen

Für jeden geöffneten Cube weist Essbase einen Bereich in einem dynamischen Rechnercache für Datenblöcke zu. Um zu bestimmen, ob der dynamische Rechnercache effektiv verwendet wird, prüfen Sie das Anwendungslog und die Konfigurationseinstellungen.

Verwendung des dynamischen Rechnerscaches prüfen

Die Konfigurationseinstellung DYNCALCCACHEMAXSIZE gibt die maximale Größe jedes dynamischen Rechnercaches auf dem Essbase-Server an. Standardmäßig ist die Größe auf 20 MB gesetzt. Essbase weist einen Bereich in einem dynamischen Rechnercache für Datenblöcke zu, bis der von der Einstellung DYNCALCACHEMAXSIZE angegebene maximale Speicherbereich zugewiesen wird.

Essbase schreibt für jeden Datenabruf zwei Nachrichten in das Anwendungslog. Im folgenden Beispiel (abgeschnitten) beschreibt die erste Meldung die Gesamtzeit, die für den Abruf erforderlich ist:

[2024-07-27T16:43:52.707+00:00] ... [EXEC_TIME: 0.53] Regular extractor completed successfully
[2024-07-27T16:43:52.707+00:00] ... Regular Extractor Big Block Allocs -- Dyn.Calc.Cache : [30] non-Dyn.Calc.Cache : [0]

Wenn ein dynamischer Rechnercache verwendet wird, zeigt eine zweite Meldung die Anzahl der Blöcke an, die im Datenrechnercache berechnet wurden (Dyn.Calc.Cache: [n]) und die Anzahl der Blöcke, die im Speicher außerhalb des dynamischen Rechnercache berechnet wurden (Nicht-Dyn.Calc.Cache: [n]).

Um festzustellen, ob der dynamische Rechnercache effektiv verwendet wird, prüfen Sie beide Meldungen, und berücksichtigen Sie Ihre Konfigurationseinstellungen. Beispiel: Wenn die Meldung angibt, dass Blöcke außerhalb und in einem dynamischen Rechnercache berechnet wurden, können Sie die Einstellung DYNCALCCACHEMAXSIZE erhöhen.

Wenn die angegebene maximale Größe alles ist, was Sie sich leisten können, und wenn die Verwendung von Speicher außerhalb des Rechnercaches zum Abschließen dynamisch berechneter Abrufe zu inakzeptablen Verzögerungen führt, setzen Sie DYNCALCCACHEWAITFORBLK auf TRUE.

Sie können die Abfragedatenbank-MaxL-Anweisung mit der Grammatik Performancestatistiken verwenden, um eine Zusammenfassung der dynamischen Rechnercacheaktivität anzuzeigen.

Cachegröße für dynamischen Rechner ändern

Es gibt fünf Konfigurationseinstellungen, die für dynamische Rechnercaches relevant sind. Die optimalen Werte für diese Einstellungen hängen vom Speicher auf dem Essbase-Server-Rechner, der Konfiguration der Essbase-Datenbanken und der Art der Benutzerabfragen ab.

Die folgende Beschreibung jeder Konfigurationseinstellung enthält Empfehlungen zur Bestimmung von Werten für Ihr System. Um die individuellen Anforderungen Ihrer Website zu erfüllen, müssen Sie möglicherweise die Einstellungen testen und anpassen.

  • DYNCALCCACHEMAXSIZE: Diese Einstellung gibt die maximale Größe an, die Essbase jedem dynamischen Rechnercache zuweisen kann.

    Empfohlener Einstellungswert = C * S * U.

    • C ist der Wert der maximalen Anzahl von Blöcken, die Essbase bei der Berechnung eines Blocks beheben muss (Adressierbarkeit erreichen). Normalerweise ist ein Wert von 100 eine gute Näherung für diesen Wert. Diese Zahl kann höher sein, wenn Sie eine sehr große Anzahl von untergeordneten Elementen in einer Formelberechnung konsolidieren.

    • S ist die Größe des größten erweiterten Blocks in allen Datenbanken auf dem Essbase-Server-Rechner. Um die erweiterte Blockgröße zu berechnen, multiplizieren Sie die Anzahl der Elemente (einschließlich Dynamic Calc-Elementen und dynamischen Zeitreihenelementen) in jeder dicht besetzten Dimension für die Anzahl der Zellen im Block, und multiplizieren Sie die Anzahl der Zellen mit der Größe jeder Elementzelle, 8 Byte.

      Beispiel: Berücksichtigen Sie die Elementanzahl in Dense-Dimensionen in Sample.Basic (Nur Label-Elemente werden nicht gezählt):

      • 19 (Jahr, mit 12 gespeicherten Elementen und 7 dynamischen Berechnungselementen, einschließlich HTD und QTD)

      • 14 (Messungen, mit 8 gespeicherten Elementen und 6 dynamischen Berechnungselementen)

      • 4 (Szenario, mit 2 gespeicherten Elementen und 2 Elementen der dynamischen Berechnung)

      S = 19 * 14 * 4 Zellen (8 Bytes / Zelle) = 8512 Bytes pro Block

      Diese Zahl wird im Anwendungslog als logische Blockgröße angezeigt.

    • U ist die maximale Anzahl der erwarteten gleichzeitigen Benutzer in der Datenbank mit der größten Anzahl gleichzeitiger Benutzer.

      Wenn Sie DYNCALCACHEMAXSIZE den Wert 0 (null) zuweisen, wird Essbase angewiesen, keine dynamischen Rechnercaches zu verwenden.

      Standardmäßig beträgt die Größe für diesen Wert 20 MB (20.971.520 Byte).

  • DYNCALCCACHEWAITFORBLK: Wenn Essbase den gesamten für einen dynamischen Rechnercache zugewiesenen Bereich verwendet, teilt diese Einstellung Essbase mit, ob gewartet werden soll, bis Speicherplatz im Cache verfügbar ist, oder ob die Blöcke im Speicher außerhalb des Cache sofort geschrieben und berechnet werden. Wenn der Cache zu klein ist, können sich mehrere Threads in der Queue befinden.

    Empfohlener Einstellwert = FALSE (Standardwert).

    Bevor Sie auf TRUE setzen, versuchen Sie folgende Alternativen:

    • Dem Serverrechner physischen Speicher hinzufügen

    • Erhöhen Sie den Wert von DYNCALCCACHEMAXSIZE, testen und wiederholen, bis Sie sicherstellen, dass Sie keinen weiteren Speicher für den dynamischen Rechnercache verwenden können.

  • DYNCALCCACHEBLKTIMEOUT: Wenn Essbase auf verfügbaren Speicherplatz im dynamischen Rechnercache warten soll, definiert diese Einstellung, wie lange er wartet.

    Empfohlener Einstellwert = WT / B.

    • WT ist die maximal tolerierbare Wartezeit für eine Abfrage. Beispiel: 5 Sekunden.

    • B ist die Gesamtanzahl der logischen Blöcke, auf die in der größten Abfrage zugegriffen wird.

      Um den Wert von B zu bestimmen, prüfen Sie die Meldungen im Anwendungslog auf die größte Anzahl von Dyn.Calc.Cache "Big Block Allocs" für eine Abfrage.

  • DYNCALCCACHEBLKRELEASE: Wenn Essbase gewartet hat, dass die angegebene Zeit und der angegebene Speicherplatz immer noch nicht im dynamischen Rechnercache verfügbar sind, teilt diese Einstellung Essbase mit, ob die Blöcke direkt außerhalb des dynamischen Rechnercaches geschrieben und berechnet oder Speicherplatz erstellt werden sollen, indem Blöcke ausgetauscht und die ausgelagerten Blöcke vorübergehend in einem Puffer komprimiert werden.

    Empfohlener Einstellwert = FALSE (Standardwert).

    Wählen Sie 'Wahr' nur, wenn schwerwiegende Probleme mit dem Speichermangel auftreten.

  • DYNCALCCACHECOMPRBLKBUFSIZE: Wenn Essbase die angegebene Wartezeit gewartet hat und die Einstellung DYNCALCCACHEBLKRELEASE TRUE ist, entspricht diese Einstellung der Größe des komprimierten Blockpuffers für den dynamischen Rechnercache.

    Empfohlener Einstellungswert = (C * S) / 2

    wobei C der Wert der maximalen Anzahl von Blöcken ist, die Essbase bei der Berechnung eines Blocks beheben muss (für die Adressierbarkeit), und S die Größe des größten erweiterten Blocks in allen Datenbanken auf dem Rechner ist. Berechnen Sie C und S auf die gleiche Weise wie beschrieben oder die Einstellung DYNCALCCACHEMAXSIZE.