取得時間に対する動的計算の影響の軽減

密ディメンションのメンバーを動的に計算するときの取得時間の増加は、メンバーに複雑な式が含まれていないかぎり、重要ではありません。取得時間の増加は、疎ディメンションのメンバーを動的計算としてタグ付けする場合に重要になることがあります。

Essbaseデータベースでの動的計算メンバーの影響を分析および管理するには、取得係数、取得バッファ・サイズおよび計算機キャッシュに注意します。

ノート:

問合せ取得に最も重大な影響を与える関数のリストは、「メンバー・セット関数およびパフォーマンス」を参照してください。

取得係数の表示

取得時間の増加を見積ることができるように、Essbaseでは、アウトラインの保存時にデータベース・アウトラインの取得係数が計算されます。Essbaseでは、この取得係数を、Essbaseでの計算コストの最も高い動的に計算されるデータ・ブロックに基づいて計算します。取得係数では、集約のみが考慮されます。式の取得の影響は考慮されません。

取得係数は、Essbaseがコストの最も高いブロックを計算するためにディスクまたはデータベースから取得する必要があるデータ・ブロックの数です。データベースで、密ディメンションにのみ動的計算メンバーが存在する(疎ディメンションに動的計算メンバーが存在しない)場合の取得係数は1です。

取得係数の高い(たとえば、2000を超える)アウトラインは、ユーザーがデータを取得するときに大幅な遅延の原因となる可能性があります。ただし、取得時間への実際の影響は、ユーザーが取得する動的に計算されるデータ値の数によっても異なります。取得係数は1つの指標にすぎません。アプリケーションによっては、動的計算メンバーを使用することで、データベース・サイズとインデックス・サイズが小さくなるため、取得時間が短縮される場合があります。

Essbaseでは、アプリケーション・ログに取得係数の値が表示されます。

次のサンプルのようなメッセージによって、取得係数が示されます。


Essbase needs to retrieve [1] Essbase kernel blocks in order
to calculate the top dynamically-calculated block.

このメッセージは、Essbaseが、コストの最も高い動的に計算されるデータ・ブロックを計算するために、1つのブロックを取得する必要があることを示しています。

取得バッファ・サイズの拡張

ユーザーがSmart View、MDXまたはレポート・ライターから問い合せると、Essbaseは取得バッファを使用して問合せを最適化します。Essbaseでデータのより大きなセクションを同時に処理できるため、取得バッファ・サイズを増やすと、問合せのパフォーマンスが向上します。

デフォルトでは、取得バッファ・サイズは20 KBです。ただし、取得バッファ・サイズに20 KBを超えるサイズを設定すると、取得時間を短縮できます。

取得バッファ・サイズを増やすには、MaxL alter database文を使用します。例:

alter database Sample.Basic set retrieve_buffer_size 20kb;

または、Essbase Webインタフェースを使用して、データベース・カスタマイズ設定のバッファ・サイズを変更できます。

動的計算機キャッシュの使用

デフォルトでは、Essbaseは、(問合せなどのために)密ディメンションの動的計算メンバーを計算するときに、計算に必要なすべてのブロックを動的計算機キャッシュと呼ばれるメモリーの領域に書き込みます。Essbaseは、これらのブロックを動的計算機キャッシュに書き込むときに、そのブロックを拡張して、密ディメンションのすべての動的計算メンバーを含めます。

密ディメンションの2パス計算メンバーが含まれる問合せの場合は、取得されるブロックごとに1つの動的計算機キャッシュが必要です。

Essbaseの動的計算機キャッシュを使用することで、動的計算のメモリー使用率を一元的に制御できます。また、動的計算機キャッシュ内のデータ・ブロックを管理すると、全体のメモリー・スペース要件が削減され、メモリー割当てを行うためのオペレーティング・システムの呼出し回数を減らすことで、パフォーマンスを向上させることができます。

ノート:

動的計算機キャッシュと計算機キャッシュでは、計算パフォーマンスを最適化するために使用するアプローチが異なります。

「動的計算機キャッシュのサイズ設定」および「計算機キャッシュのサイズ設定」も参照してください。

動的計算機キャッシュの使用状況の確認

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


Regular Extractor Elapsed Time : [0.531] seconds
Regular Extractor Big Blocks Allocs -- Dyn.Calc.Cache : [30] non-Dyn.Calc.Cache : [0]

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

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

指定した最大サイズが、サーバー上のすべての動的計算機キャッシュに対して許可できるすべてのサイズであり、計算機キャッシュ外のメモリーを使用して動的に計算された取得を完了すると、許容できない遅延が発生します(スワップまたはページング・アクティビティの原因など)。DYNCALCCACHEWAITFORBLKをTRUEに設定します。

MaxLquery database文をperformance statistics構文で使用して、動的計算機キャッシュのアクティビティの要約を表示できます。