Essbaseキャッシュおよび計算パフォーマンス

特に大規模な計算では、計算パフォーマンスを最適化するために、Essbaseはキャッシュを使用してメモリー使用量を調整します。計算機キャッシュが使用されている場合は、計算を最適化するのに十分な大きさであることを確認してください。索引キャッシュ、データ・キャッシュ、動的計算機キャッシュおよびアプリケーション・キャッシュがどのように関連しているかを確認します。

キューブを計算する場合、Essbaseはアウトラインのメンバーごとに約30バイトのメモリーを使用します。そのため、キューブに5,000のメンバーがある場合は、Essbaseではキューブの計算に約150 KBのメモリーが必要です。

ノート:

計算スクリプトを組み合せることで、余分なメモリーの使用を回避できます。また、単一の計算スクリプトで並列計算を使用することで、パフォーマンスを向上させることができます。並列計算の使用を参照してください。

Essbaseでは、計算パフォーマンス(特に大規模な計算)を最適化するために、メモリーが使用されます。キューブ・アウトラインのサイズを変更した場合を除き、使用されるメモリーの量は制御できません。ただし、メモリー・キャッシュのサイズによってEssbaseでの計算を最適化できます。

Essbaseでは、次のキャッシュを使用してメモリー使用量を調整します。

  • 計算機キャッシュ。

    初めてキューブを計算するときに、計算機キャッシュのサイズは、計算のパフォーマンスにとって重要です。可能であれば、計算機キャッシュを、Essbaseで最適な計算機キャッシュ・オプションを使用するために十分な大きさにするようにしてください。

    「計算機キャッシュのサイズ」を参照してください。

  • 動的計算機キャッシュ。動的計算機キャッシュのサイズ設定を参照してください。

  • インデックス・キャッシュ。キューブが大規模な場合は、デフォルトのインデックス・キャッシュは、最適な計算パフォーマンスを提供するのに十分な大きさではありません。INDEXCACHESIZEアプリケーション構成プロパティ、またはMaxL alter database set index_cache_sizeを参照してください。

  • データキャッシュ。DATACACHESIZEアプリケーション構成プロパティー、または MaxL alter database set data_cache_sizeを参照してください。

  • データ・ファイル・キャッシュ。

  • アプリケーションキャッシュ。ブロック・ストレージ・キューブでハイブリッド・モードが使用されている場合は、アプリケーション・キャッシュで取得に関するメモリー使用率の管理に役立ちます。アプリケーション・キャッシュは、集約ストレージ・キャッシュに似ています。詳細は、集約ストレージ・キャッシュに関する項を参照してください。

計算機キャッシュのサイズ指定

Essbase計算機キャッシュの最適なサイズは、それを使用する場合、アウトライン内の疎ディメンションの数と密度によって異なります。計算機キャッシュのビットマップを理解すると、計算機キャッシュのサイズを最適化できます。

ブロック管理を最適化するために、Essbaseはビットマップを作成し、そのサイズは計算機キャッシュのサイズによって制御され、計算中にデータ・ブロックを記録および追跡できます。ビットマップは、ディスクI/OよりもEssbaseの方が高速な取得方法です。特に、キューブを初めて計算する場合や、疎データでキューブを計算する場合です。

データベースに2つ以上の疎ディメンションがあり、次のいずれかの条件も満たされている場合、Essbaseは計算機キャッシュ・ビットマップを使用します。

  • 少なくとも1つの完全疎ディメンションを計算します。

  • 計算スクリプトでSET CACHE ALLコマンドを指定します。

計算機キャッシュビットマップについて

計算機キャッシュの場合、Essbaseは疎ディメンションを次の2つのグループに分離します。

  • ビットマップ・ディメンション: Essbaseがいっぱいになるまでビットマップに収まる疎ディメンション。ビットマップに配置された疎ディメンションの各メンバーの組合せは、1ビットのメモリーを占有します。ビットマップに配置するには、疎ディメンションのすべてのメンバーの組合せに対して十分な領域がビットマップに存在する必要があります。

  • アンカー・ディメンション: ビットマップに収まらない、データベース・アウトライン内の残りの1つ以上の疎ディメンション。

Essbaseは、アウトライン内の最初の疎ディメンションで始まり、ビットマップにできるだけ多く収まります。適合するディメンションはビットマップ・ディメンションです。計算機キャッシュはビットマップのサイズを制御するため、収まるスパース・ディメンションの数は計算機キャッシュのサイズによって異なります。

残りの疎ディメンションはアンカー・ディメンションです。アンカー・ディメンションの場合、Essbaseはビットマップを使用してブロックが存在するかどうかを判断できません。

どのディメンションがアンカー・ディメンションで、どのディメンションがビットマップ・ディメンションであるかを確認するには、SET MSG DETAIL計算コマンドを使用して、アプリケーション・ログにビットマップ情報を表示します。

できるだけ多くのディメンションをビットマップに配置できるように、アウトライン内の疎ディメンションを慎重に並べ替えます。メンバー数が最も少ないディメンションから開始し、メンバー数が最も多いディメンションが最後まで続行します。この順序により、より多くのディメンションがビットマップに収まり、計算パフォーマンスが向上します。

ノート:

アウトライン内の疎ディメンションの順序は、問合せのパフォーマンスにも影響します。パフォーマンスを最適化するためのアウトラインの設計を参照してください。

複数のアンカー・ディメンションがある場合(または、計算機キャッシュが複数のビットマップをサポートするのに十分な大きさでない場合)、Essbaseは単一のビットマップを使用し、アンカー・ディメンションが1つある場合は複数のビットマップを使用します。1つのビットマップは、最小のメモリーを使用しますが、複数のビットマップよりも効率が低くなります。

複数のビットマップはより多くのメモリーを使用しますが、単一のビットマップを使用するよりも高速です。1つのビットマップは子ブロックを追跡し、1つのビットマップは親ブロックを追跡します。データベースを初めて計算する場合、パフォーマンスの向上は特に高くなります。

使用されるビットマップの数は、アンカー・ディメンションのすべてのメンバーの依存親の最大数によって決まります。メンバーには、共有メンバーがないかぎり、1つの依存親があります。たとえば、Sample.BasicデータベースのProductディメンションについて考えてみます。メンバーCola (100-10)には、1つの親Colas (100)があります。しかし、ダイエットコーラ(100-20)には、ダイエットドリンク(Diet)とコラス(100)の2つの両親がいます。3つ以上の依存親を持つProductのメンバーはありません。したがって、Productがアンカー・ディメンションの場合、最大依存親は2です。

Essbaseでは、次の表に示すように、計算用に次の3つのオプションのいずれかを選択します。

表34-2計算機キャッシュ・オプション

オプション Method パフォーマンス評価

1

単一アンカー次元、複数のビットマップ

1

2

単一アンカー次元、単一ビットマップ

2

3

複数のアンカー・ディメンション、単一のビットマップ

3

Essbaseでは、計算機キャッシュのサイズに基づいて、計算に最適なパフォーマンス方法が選択されます。計算機キャッシュ・サイズが前述のオプションに対して小さすぎる場合、Essbaseでは計算機キャッシュは使用されません。計算のパフォーマンスが大幅に低下する可能性があります。

並列計算を有効にすると、どの計算機キャッシュ・オプションを使用するかが変更される可能性があります。CALCPARALLEL並列計算と他のEssbase機能との関係を参照してください。

注意:

データベースを初めて計算する場合は、計算パフォーマンスのために、計算機キャッシュのサイズが特に重要です。可能であれば、計算機キャッシュを、Essbaseで最適な計算機キャッシュ・オプションを使用するために十分な大きさにするようにしてください。

計算機キャッシュ・サイズの決定

計算機キャッシュの最適なサイズは、システムで使用可能なメモリーおよびキューブの性質と構成によって異なります。

次の式を使用して、Essbaseで前述の「計算機キャッシュ・オプション」表の3つのオプションのいずれかを選択するために必要な計算機キャッシュ・サイズを計算できます。

Calculator cache = Bitmap size in bytes * Number of bitmaps

説明

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

および場所

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

ノート:

最小ビットマップ・サイズは4バイトです。(ビットマップ・ディメンション/8上のメンバーの組合せ)が4バイト未満の場合、Essbaseでは4バイトのビットマップ・サイズが使用されます。

5つの疎ディメンション(S1からS5)を持つサンプル・キューブについて考えてみます。

表34-3例: 5つの疎ディメンションを持つサンプル・キューブ

疎ディメンション メンバー数 扶養親族

S1

20

該当しません

S2

20

該当しません

S3

50

該当しません

S4

50

該当しません

S5

200

3

このサンプル・キューブは、次の計算例に使用します。

  • オプション1: シングルアンカー寸法、マルチビットマップ
  • オプション2: シングルアンカー寸法、シングルビットマップ
  • オプション3: 複数のアンカー寸法、単一のビットマップ

オプション1: シングルアンカー寸法、マルチビットマップ

この計算例では、データベースに関する次のファクトを想定します。

  • ビットマップ・ディメンション: S1、S2、S3、S4

  • アンカー次元: S5

  • アンカー・ディメンションの依存親: 3

次の計算を実行します。

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

Essbaseで1つのアンカー・ディメンションでこのデータベースに複数のビットマップを使用するには、計算機キャッシュを625,000バイトにする必要があります。

オプション2: シングルアンカー寸法、シングルビットマップ

この計算例では、データベースに関する次のファクトを想定します。

  • ビットマップ・ディメンション: S1、S2、S3、S4

  • アンカー次元: S5

  • アンカー・ディメンションの依存親: 適用不可

次の計算を実行します。

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

Essbaseが1つのアンカー・ディメンションでこのデータベースに単一のビットマップを使用するには、計算機キャッシュを125,000バイトにする必要があります。

オプション3: 複数のアンカー寸法、単一のビットマップ

この計算例では、データベースに関する次のファクトを想定します。

  • ビットマップ・ディメンション: S1、S2、S3

  • アンカー次元: S4、S5

  • アンカー・ディメンションの依存親: 該当なし

次の計算を実行します。

次の計算を実行します。

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

Essbaseで、複数のアンカー・ディメンションを持つこのデータベースに単一のビットマップを使用するには、計算機キャッシュを2,500バイトにする必要があります。

次の表に、指定された計算機キャッシュ・サイズに応じて、Essbaseで使用される計算機キャッシュ・オプションを示します。

表34-4計算機キャッシュ・サイズに基づく計算機キャッシュ・オプションの選択

最小サイズ指定 選択済オプション

625,000バイト

オプション1(最適なパフォーマンスを提供)

125,000バイト

オプション2

2,500バイト脚注1

オプション3

脚注1

2,500バイト未満の計算機キャッシュ・サイズを指定した場合、Essbaseでは計算時に計算機キャッシュは使用されません。計算のパフォーマンスが大幅に低下する可能性があります。

計算スクリプトでSET MSG SUMMARYコマンドを使用して、どの計算機キャッシュ・オプションEssbaseを使用できるかを確認できます。空のキューブで次の計算スクリプトを実行します。

SET MSG SUMMARY;
CALC ALL;

Essbaseでは、アプリケーション・ログに計算機キャッシュ設定が表示されます。SET Commands for Calc Testing and Statisticsを参照してください。

指定できる計算機の最大キャッシュ・サイズは200,000,000バイトです。デフォルトは200,000バイト。選択する計算機キャッシュ・サイズは、使用可能なメモリーおよびキューブの構成によって異なります。

ノート:

計算が集計に基づいている場合は、通常、計算機、索引、データ・ファイルおよびデータ・キャッシュのサイズがパフォーマンスに大きく影響し、計算が式計算に基づいていない場合はパフォーマンスに大きく影響します。

キューブを初めて計算する場合、計算機キャッシュのサイズは特に重要です。可能であれば、計算機キャッシュを、Essbaseでオプション1を使用するために十分な大きさにするようにしてください。

デフォルトの計算機キャッシュ・サイズを使用するか、計算スクリプト内で計算機キャッシュのサイズを設定できます。計算スクリプトからサイズを設定した場合、この設定は計算スクリプトの期間中のみ使用されます。計算スクリプトのSET CACHEコマンドおよびCALCCACHE構成設定を参照してください。

動的計算機キャッシュのサイズ設定

開いているキューブごとに、Essbaseはデータ・ブロックの動的計算機キャッシュに領域を割り当てます。動的計算機キャッシュが効果的に使用されているかどうかを判断するには、アプリケーション・ログおよび構成設定を確認します。

動的計算機キャッシュの使用状況のレビュー

DYNCALCCACHEMAXSIZE構成設定は、Essbaseサーバー上の各動的計算機キャッシュの最大サイズを指定します。デフォルトでは、サイズは20MBに設定されています。Essbaseは、DYNCALCACHEMAXSIZE設定で指定された最大メモリー領域が割り当てられるまで、データ・ブロックの動的計算機キャッシュに領域を割り当てます。

Essbaseでは、データの取得ごとに2つのメッセージがアプリケーション・ログに書き込まれます。次の(切り捨てられた)例で、最初のメッセージは取得に要する合計時間を示します。

[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]

動的計算機キャッシュを使用している場合は、2つ目のメッセージに、データ計算機能キャッシュ内で計算されたブロックの数(Dyn.Calc.Cache: [n])および動的計算機能キャッシュ(non-Dyn.Calc.Cache: [n])の外部で計算されたブロックの数が表示されます。

動的計算機キャッシュが効果的に使用されているかどうかを判断するために、両方のメッセージを確認して、構成設定を検討します。たとえば、ブロックが動的計算機能キャッシュ外および動的計算機能キャッシュで計算されたことがメッセージに示されている場合は、DYNCALCCACHEMAXSIZE設定を増やすことができます。

指定した最大サイズが許容可能なすべてであり、計算機キャッシュの外部にあるメモリーを使用して動的に計算された取得を完了すると許容できない遅延が発生する場合は、DYNCALCCACHEWAITFORBLKをTRUEに設定します。

You can use the query database MaxL statement with the performance statistics grammar to view a summary of dynamic calculator cache activity.

動的計算機キャッシュ・サイズの変更

動的計算機キャッシュには、5つの構成設定があります。これらの設定の最適な値は、Essbaseサーバー・マシンのメモリー、Essbaseデータベースの構成、およびユーザー問合せの性質によって異なります。

各構成設定の次の説明には、システムの値を決定するための推奨事項が含まれています。サイト固有の要件を満たすには、設定をテストおよび調整する必要がある場合があります。

  • DYNCALCCACHEMAXSIZE: この設定は、Essbaseが各動的計算機キャッシュに割り当てることができる最大サイズを指定します。

    推奨設定値= C * S * U。

    • Cは、1つのブロックを計算するときにEssbaseで修正する必要があるブロックの最大数です(アドレス指定可能性を取得)。通常、値100は、この値に対して適切な近似です。数式計算で非常に多数の子を連結する場合、この数値を大きくできます。

    • Sは、Essbaseサーバー・マシン上のすべてのデータベースにおける最大の拡張ブロックのサイズです。展開されたブロック・サイズを計算するには、各密ディメンションのメンバー数(動的計算メンバーおよび動的時系列メンバーを含む)にブロック内のセル数を乗算し、セル数に各メンバー・セルのサイズ(8バイト)を乗算します。

      たとえば、Sample.Basicの密ディメンションのメンバー数について考えてみます(ラベルのみのメンバーはカウントされません)。

      • 19 (年、12個の保管済メンバーと7個の動的計算メンバー(HTDおよびQTDを含む)

      • 14 (メジャー、8つのストアド・メンバーおよび6つの動的計算メンバー)

      • 4 (シナリオ、2つのストアド・メンバーおよび2つの動的計算メンバー)

      S = 19 * 14 * 4セル(8バイト/セル) = 8512バイト/ブロック

      この数は、論理ブロック・サイズとしてアプリケーション・ログに表示されます。

    • Uは、同時ユーザー数が最も多いデータベース上の予想される同時ユーザーの最大数です。

      値0 (ゼロ)をDYNCALCACHEMAXSIZEに割り当てると、Essbaseで動的計算機キャッシュを使用しないように指示されます。

      デフォルトでは、この値のサイズは20MB (20,971,520バイト)です。

  • DYNCALCCACHEWAITFORBLK: Essbaseが動的計算機キャッシュに割り当てられている領域をすべて使用する場合、この設定はEssbaseに、キャッシュで領域が使用可能になるまで待機するか、キャッシュ外部のメモリー内のブロックをすぐに書込みおよび計算するかを指示します。キャッシュが小さすぎると、複数のスレッドがキューに入る可能性があります。

    推奨設定値はFALSE (デフォルト値)です。

    TRUEに設定する前に、次の代替方法を試してください。

    • サーバー・マシンへの物理メモリーの追加

    • DYNCALCCACHEMAXSIZEの値を増やしてテストし、動的計算機キャッシュにこれ以上メモリーを使用できないことを確認するまで繰り返します。

  • DYNCALCCACHEBLKTIMEOUT: Essbaseが動的計算機キャッシュ内の使用可能な領域を待機する場合、この設定によって待機する時間が定義されます。

    推奨設定値はWT / Bです。

    • WTは、問合せの最大許容待機時間(5秒など)です。

    • Bは、最大の問合せでアクセスされた論理ブロックの合計数です。

      Bの値を確認するには、アプリケーション・ログのメッセージで、問合せのDyn.Calc.CacheのBig Block Allocsの最大数を確認します。

  • DYNCALCCACHEBLKRELEASE: Essbaseが指定された時間を待機し、動的計算機キャッシュでまだ領域を使用できない場合、この設定はEssbaseに、動的計算機キャッシュのすぐ外でブロックを書き込んで計算するか、ブロックをスワップ・アウトしてバッファ内のスワップされたブロックを一時的に圧縮して領域を作成するかを指示します。

    推奨設定値はFALSE (デフォルト値)です。

    重大なメモリー不足の問題が発生している場合にのみTRUEに設定します。

  • DYNCALCCACHECOMPRBLKBUFSIZE: Essbaseが指定された待機時間を待機していて、DYNCALCCACHEBLKRELEASE設定がTRUEの場合、この設定は動的計算機キャッシュの圧縮ブロック・バッファのサイズです。

    推奨設定値= (C * S) / 2

    ここで、Cは、1つのブロックを計算するときにEssbaseで修正する必要があるブロックの最大数(アドレス指定可能性を取得)の値で、Sはマシン上のすべてのデータベース間で最大の拡張ブロックのサイズです。CおよびSは、説明またはDYNCALCCACHEMAXSIZE設定と同じ方法で計算します。