Essbaseキャッシュの最適化

この項の内容:

Essbaseキャッシュの理解

キャッシュ・メモリーのロックを使用するかどうかの決定

キャッシュのサイズ設定

キャッシュ設定の微調整

この章の情報は、ブロック・ストレージ・データベースのみに適用され、集約ストレージ・データベースとは関係がありません。集約ストレージとブロック・ストレージの比較。も参照してください。

Essbaseキャッシュの理解

Essbaseでは、次の5つのメモリー・キャッシュを使用して、メモリーの使用率を調整します:

表 171. Essbaseキャッシュのリスト

キャッシュ

説明

インデックス・キャッシュ

インデックス・ページを保持するメモリー内のバッファ。メモリー内に一度にいくつのインデックス・ページが保持されるかは、キャッシュに割り当てられたメモリー量によって異なります。

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

圧縮データ・ファイル(.pagファイル)を保持するメモリー内のバッファ。データ・ロード、計算および取得操作を行うと、必要に応じてEssbaseによってメモリーがデータ・ファイル・キャッシュに割当てられます。データ・ファイル・キャッシュは、直接入出力が有効な場合にのみ使用されます。

データ・キャッシュ

非圧縮データ・ブロックを保持するメモリー内のバッファです。データ・ロード、計算および取得操作を行うと、必要に応じてEssbaseによってメモリーがデータ・キャッシュに割当てられます。

計算機のキャッシュ

計算操作の際に、Essbaseでデータ・ブロックを作成および追跡するために使用されるメモリー内のバッファ。

動的計算キャッシュ

密次元の動的計算メンバーの計算(クエリーなど)に必要なすべてのブロックをEssbaseに保管するために使用される、メモリー内のブロック。

Essbaseでは、それぞれのキャッシュにデフォルトのサイズが設定されています。各データベースの必要に応じてサイズを調整できます。適切なキャッシュ・サイズは、データベース・サイズ、ブロック・サイズ、インデックス・サイズおよびサーバーの使用可能メモリーなど、多くの要因の影響を受けます。キャッシュ・サイズの設定は、データベースやサーバーの全体的なパフォーマンスに大きく影響する可能性があります。

次のトピックで、最適なパフォーマンスを得るためのキャッシュのサイズ設定に関する情報を示します。

キャッシュ・メモリーのロックを使用するかどうかの決定

キャッシュ・サイズを設定する前に、キャッシュ・メモリーのロックを使用可能にするか、または設定を使用不可のままにしておく(デフォルト)必要があります。

キャッシュ・メモリーのロックを設定することによって、インデックス・キャッシュ、データ・ファイル・キャッシュおよびデータ・キャッシュに使用されるメモリーを物理メモリーにロックして、EssbaseカーネルがシステムRAMを優先的に使用できるようにするかどうかを制御します。

キャッシュ・メモリーのロックを使用するには、直接入出力を使用している必要があります(デフォルトの入出力アクセス・モードは、バッファ入出力です)。直接入出力では、バッファ入出力に比べて大きなインデックス・キャッシュ・サイズが必要です。データベース設定の管理。を参照してください。

ロックによって、Essbaseサーバーで使用されるメモリーのスワップ時に、システム・メモリー・マネージャでキャッシュが使用するメモリーをスワップする必要がなくなるため、Essbaseデータベースのパフォーマンスが向上します。デフォルトでは、キャッシュ・メモリーのロックはオフです。

キャッシュ・メモリーのロックを使用可能にすると、EssbaseカーネルがシステムRAMを優先的に使用できるようになります。キャッシュ・メモリーのロックを使用可能にする場合は、Essbaseカーネル以外が使用できるように、システムRAMの少なくとも3分の1を残してください。EssbaseカーネルにシステムRAMを優先的に使用させない場合は、キャッシュ・メモリーのロックを使用可能にしないでください。

SolarisでEssbaseを実行している場合は、Essbaseを起動してキャッシュ・メモリーのロックを使用可能にする前に、Bourneシェル・スクリプトroot.shを実行します。このスクリプトは、メモリーをロックできるように、サーバーをスーパーユーザー・モードで実行するように設定します。Oracle Enterprise Performance Management System Installation and Configuration Guideを参照してください。

  キャッシュ・メモリーのロックを使用可能にするには、次のツールを使用します:

ツール

トピック

場所

Administration Services

キャッシュ・メモリーのロックの有効化

Oracle Essbase Administration Services Online Help

MaxL

alter database enable cache_pinning

『Oracle Essbaseテクニカル・リファレンス』

ESSCMD

SETDBSTATEITEM 26

『Oracle Essbaseテクニカル・リファレンス』

キャッシュのサイズ設定

構成可能な各キャッシュで使用する必要のある設定は、データ配分と、データベースの密/疎の構成によって異なります。キャッシュを合算した最大合計サイズは、Essbaseで必要なメモリーを考慮に入れた後の使用可能なメモリー量に等しくなければなりません。

各サイトのニーズは、特定のデータベースであっても異なる場合があります。Essbaseでは、各操作の複雑さとタイプに応じて、データ・ファイル・キャッシュとデータ・キャッシュに必要とされる量のメモリーが割り当てられます。最適なパフォーマンスを得るために十分なメモリーを見積もるには、この項の推奨値を使用します。

初めてEssbaseを使用する場合、キャッシュ・サイズは、次の項で説明するデフォルト値に自動的に設定されます。これらのトピックを使用して、各キャッシュ・サイズの推奨事項を調べて理解してください。

注:

キャッシュ・サイズの変更は、データベースを次に起動したときに、有効になります。

インデックス・キャッシュ・サイズの設定

インデックスは、ディスク上のインデックス・ファイルに保管されます。データベースがアクティブであるときは、最後にアクセスされたインデックス・ページがインデックス・キャッシュ内に保持されます。メモリー内に同時に保持できるインデックスの量は、インデックス・キャッシュに割り当てるメモリーの量によって変わります。

注:

インデックス・ページのサイズは、8 Kに固定されています。これは、データベースの移行を簡単にすると同時に、入出力のオーバーヘッドを削減するためです。

インデックス・キャッシュ・サイズの有効性は、計算の性質によって異なります。たとえば、データベース全体を再ロードおよび再計算する場合(毎月リフレッシュされるデータベースなど)、インデックス・キャッシュ・サイズが大きいことは有益ではありません。Essbaseで、計算中に既存のブロックのインデックス・キャッシュが検索されるのではなく、ブロックが作成されるためです。

表172に、インデックス・キャッシュのデフォルト設定および推奨の設定を示します:

表 172. インデックス・キャッシュ・サイズの設定

最小値

最大値

デフォルト値

推奨値

1MB (1,048,576バイト)

32ビットのEssbase: 4GB

64ビットのEssbase: 256TB

バッファI/O: 1MB (1,048,576バイト)

直接I/O: 10MB

可能な場合は、すべてのessn.indファイルの合計サイズ。それ以外の場合は、可能なかぎり大きなサイズ。このキャッシュ・サイズを大きくしてもパフォーマンスは向上しないため、インデックス・サイズより大きいサイズに設定しないでください。インデックス・サイズの合計を決定するには、インデックス・ファイルを参照してください。

データベースに対する入出力アクセス・モードの変更、または新規作成したすべてのデータベースのデフォルトの変更の詳細については、バッファI/Oと直接I/Oの理解を参照してください。

通常、直接入出力を使用している場合は、インデックス・キャッシュをシステム・リソースで許容されるかぎり大きくします。バッファ入出力を使用している場合は、インデックス・キャッシュを可能なかぎり小さくします。

キャッシュ設定のテストと微調整の詳細については、キャッシュ設定の微調整を参照してください。

インデックス・キャッシュ・サイズの変更

  インデックス・キャッシュのサイズを設定するには、次のツールを使用します:

ツール

トピック

場所

Administration Services

キャッシュ・サイズの設定

Oracle Essbase Administration Services Online Help

MaxL

alter database set index_cache_size

『Oracle Essbaseテクニカル・リファレンス』

ESSCMD

SETDBSTATEITEM 12

SETDBSTATE

『Oracle Essbaseテクニカル・リファレンス』

データ・ファイル・キャッシュ・サイズの設定

直接入出力を使用している場合、データ・ファイル・キャッシュはデータ・ファイル(.pagファイル)をメモリー内に保持します。直接入出力を使用していない場合、データ・ファイル・キャッシュは使用されません。メモリー内に同時に収容できるデータ・ファイル内のデータの量は、データ・ファイル・キャッシュに割り当てるメモリーの量によって変わります。

一般に、データ・キャッシュとデータ・ファイル・キャッシュのどちらに対してメモリーを割り当てるかを選択する必要がある場合、直接入出力を使用しているときは、データ・ファイル・キャッシュを選択します。

表173に、データ・ファイル・キャッシュのデフォルト設定および推奨の設定を示します:

表 173. データ・ファイル・キャッシュ・サイズの設定

最小値

デフォルト値

推奨値

直接入出力: 10,240 KB (10,485,760バイト)

直接入出力: 32,768KB(33,554,432バイト)

可能な場合は、すべてのessn.pagファイルの合計サイズ。それ以外の場合は、可能なかぎり大きなサイズ。

Essbaseがバッファ入出力を使用するように設定されている場合、このキャッシュ設定は使用されません。

通常、直接入出力を使用している場合は、データ・ファイル・キャッシュをシステム・リソースで許容されるかぎり大きくします。バッファ入出力を使用している場合、データ・ファイル・キャッシュは使用されません。

キャッシュ設定のテストと微調整の詳細については、キャッシュ設定の微調整を参照してください。

データ・ファイル・キャッシュ・サイズの変更

  データ・ファイル・キャッシュ・サイズを設定するには、次のツールを使用します:

ツール

トピック

場所

Administration Services

キャッシュ・サイズの設定

Oracle Essbase Administration Services Online Help

MaxL

alter database set data_file_cache_size

『Oracle Essbaseテクニカル・リファレンス』

ESSCMD

SETDBSTATEITEM 27

『Oracle Essbaseテクニカル・リファレンス』

データ・キャッシュ・サイズの設定

データ・ブロックは、物理ディスク上とメモリー内にあります。データ・キャッシュ内に同時に保持できるブロックの数は、データ・キャッシュに割り当てるメモリーの量によって変わります。

ブロックが要求されると、Essbaseではデータ・キャッシュからそのブロックが検索されます。Essbaseでキャッシュ内でブロックが見つかると、ただちにそのブロックがアクセスされます。キャッシュ内でブロックが見つからなかった場合は、Essbaseでは適切なブロック番号のインデックスが検索され、そのブロックのインデックス項目を使用して、ディスク上の適切なデータ・ファイルからブロックが取得されます。要求されたブロックをデータ・キャッシュから取得するほうが速いため、パフォーマンスが向上します。

一般に、データ・キャッシュとデータ・ファイル・キャッシュのどちらに対してメモリーを割り当てるかを選択する必要がある場合、直接入出力を使用しているときは、データ・ファイル・キャッシュを選択します。

表174に、データ・キャッシュのデフォルト設定および推奨の設定を示します:

表 174. データ・キャッシュ・サイズの設定

最小値

デフォルト値

推奨値

3072 KB (3145728バイト)

3072 KB (3,145,728バイト)

0.125 *データ・ファイル・キャッシュ・サイズの値。次のいずれかの状況が存在する場合は、値を大きくします:

  • 多数の同時ユーザーが異なるデータ・ブロックにアクセスする場合。

  • 疎な範囲に対する関数が計算スクリプトに含まれていて、その関数で対象メンバーすべてがメモリー内に存在する必要がある場合(たとえば@RANKおよび@RANGEの使用時)。

  • データ・ロードにおいて、DLTHREADSWRITE設定で指定されたスレッドの数が多く、展開されているブロックのサイズが大きい場合。

同時計算の実行時には、データ・キャッシュを増やすことが必要な場合があります。たとえば、同時計算が共通のブロックを共有せず、子の数が最も大きい疎メンバーがそのすべての子ブロックをデータベース内に移入している場合です。データ・キャッシュを同時計算で計算するには、次の式を使用します:

      (Size of big block in bytes) * max(Number of children for a Sparse member) * (Number of concurrent batch calc processes) * 2
   

同時計算の実行時にその他の同時操作(データ・ロードやクエリーなど)を行う場合は、これらの要求に適応するため、データ・キャッシュをさらに増やします。

データ・キャッシュは、バッファ入出力と直接入出力のいずれを使用する場合でも、できるかぎり小さくしてください。

キャッシュ設定のテストと微調整の詳細については、キャッシュ設定の微調整を参照してください。

注:

64ビット・プラットフォームでEssbaseを実行している場合、最適なデータ・キャッシュとデータ・ファイル・キャッシュの設定は4 GBより大きくなることがあります。Essbaseクライアントで4 GBより大きい設定は指定できませんが、MEMSCALINGFACTOR構成設定を使用することで、より大きな設定を使用可能にできます。『Oracle Essbaseテクニカル・リファレンス』を参照してください。

データ・キャッシュ・サイズの変更

  データ・キャッシュ・サイズを設定するには、次のツールを使用します:

ツール

トピック

場所

Administration Services

キャッシュ・サイズの設定

Oracle Essbase Administration Services Online Help

MaxL

alter database set data_cache_size

『Oracle Essbaseテクニカル・リファレンス』

ESSCMD

SETDBSTATEITEM 5

SETDBSTATE

『Oracle Essbaseテクニカル・リファレンス』

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

Essbaseでは、サイズが計算機キャッシュのサイズによって制御されるビットマップを作成して、計算中にデータ・ブロックを記録して追跡できます。ビットマップを使用して存在するブロックを判別することは、データベースを初めて計算する場合や、データが疎であるときにデータベースを計算する場合は特に、ディスクにアクセスして情報を取得するよりも短時間で済みます。

Essbaseでは、データベースに少なくとも2つの疎次元があり、さらに次のいずれかの条件に該当する場合に、計算機キャッシュのビットマップが使用されます:

  • 少なくとも1つの疎次元全体を計算する。

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

計算機キャッシュの最適なサイズは、アウトライン内の疎次元の数と密度によって異なります。計算機キャッシュのビットマップの理解、計算機キャッシュのサイズ設定、および計算機キャッシュのサイズ(すなわち、ビットマップの可能なかぎり大きなサイズ)の変更を行うには、必要に応じて次のトピックを使用してください:

計算機キャッシュのビットマップの理解

計算機キャッシュの場合、データベース内の密次元はEssbaseによって次の2つのグループに分けられます:

  • ビットマップ次元: データベース・アウトラインの疎次元のうち、Essbaseによって、ビットマップがいっぱいになるまでビットマップに対応付けられているもの。ビットマップに配置された疎次元のメンバーの組合せは、それぞれが1ビットのメモリーを占有します。ビットマップ内には、疎次元のすべてのメンバーの組合せをビットマップに配置できるだけの十分なスペースが必要です。

  • アンカー次元: ビットマップに対応付けされていない、データベース・アウトライン内のその他の疎次元。

Essbaseでは、データベース・アウトライン内の最初の疎次元から開始して、可能なかぎり多くの疎次元がビットマップに対応付けられます。対応付けられる次元はビットマップ次元です。別の疎次元全体をビットマップに対応付けできなくなると、Essbaseによってプロセスが停止されます。ビットマップのサイズは計算機キャッシュによって制御されるため、ビットマップに対応付けられる疎次元の数は、計算機キャッシュ(および疎次元の数とサイズ)によって変わります。

残りの疎次元はアンカー次元です。アンカー次元の場合、ブロックが存在するかどうかを判別するためにEssbaseでビットマップを使用できません。

アンカー次元かビットマップ次元かを識別するには、SET MSG DETAIL計算コマンドを使用して、アプリケーション・ログ内にビットマップの情報を表示します。

ビットマップ内に可能なかぎり多くの次元を配置できるように、アウトライン内の疎次元は慎重に配列します。含まれているメンバーが最も少ない次元から始めて、メンバーが最も多い次元が最後になるようにします。このような順序によって、より多くのビットマップを次元に対応付けられるようになり、結果として計算のパフォーマンスが向上します。

注:

アウトライン内の疎次元の順序は、クエリーのパフォーマンスにも影響を与えます。クエリーのパフォーマンスの最適化を参照してください。

複数のアンカー次元が存在する場合、または計算機キャッシュが複数のビットマップをサポートできるだけの大きさでない場合は、Essbaseでは単一のビットマップが使用されます。また、1つのアンカー次元が存在する場合は、複数のビットマップが使用されます。

単一のビットマップには次のようなプロパティがあります:

  • 単一ビットマップは、子ブロックの追跡に使用されます。

  • 単一ビットマップでは、最小限のメモリーしか使用されませんが、複数ビットマップより効率が悪くなります。

複数のビットマップには、次のようなプロパティがあります:

  • 複数のビットマップが使用され、子ブロックの追跡に1つ、親ブロックの追跡に1つのビットマップが使用されます。

  • 複数のビットマップは、単一のビットマップを使用する場合よりも多くのメモリーを使用しますが、より高速になります。初めてデータベースを計算するときは、パフォーマンスが特に大幅に向上します。

  • 使用されるビットマップの数は、アンカー次元のメンバーが依存している親の数によって決まります。メンバーには、共有メンバーを持っている場合を除き、1つの従属する親があります。たとえば、Sample.Basicデータベースの製品次元について考えてみてください。メンバーCola (100-10)にはColas (100)という親が1つあります。ただし、Diet Cola (100-20)には、Diet Drinks (Diet)とColas (100)という2つの親があります。製品のメンバーで、3つ以上の依存する親を持つものはありません。したがって、製品がアンカー次元の場合、依存する親の最大数は2です。

Essbaseでは、計算用に表175に示す3つのオプションのいずれかが選択されます:

表 175. 計算機キャッシュ・オプション

オプション

メソッド

パフォーマンス評価

1

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

1

2

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

2

3

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

3

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

並列計算を使用可能にすると、使用される計算機キャッシュ・オプションが変わる場合があります。計算機のキャッシュを参照してください。

注意

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

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

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

次の式を使用して、Essbaseに必要な計算機キャッシュ・サイズを計算して、表175の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バイトのビットマップ・サイズが使用されます。

表176で示されている、S1からS5までの疎次元を持つサンプル・データベースについて考えてみます:

表 176. 例: 5つの疎次元を使用したデータベースの事例

疎次元

メンバー数

依存する親

S1

20

適用なし

S2

20

適用なし

S3

50

適用なし

S4

50

適用なし

S5

200

3

次のサンプル計算では、このサンプルのデータベースを使用します:

オプション1: 単一のアンカー次元、複数ビットマップ

このサンプル計算では、データベースに関して次の状況を仮定します(表175より):

  • ビットマップ次元: 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: 単一のアンカー次元、単一ビットマップ

このサンプル計算では、データベースに関して次の状況を仮定します(表175より):

  • ビットマップ次元: 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: 複数のアンカー次元、単一ビットマップ

このサンプル計算では、データベースに関して次の状況を仮定します(表175より):

  • ビットマップ次元: 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バイトである必要があります。

データベースの計算機キャッシュ・サイズの選択

表177は、指定された計算機キャッシュ・サイズに基づいてEssbaseが使用する計算機キャッシュ・オプションを示します:

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

指定した最小サイズ

選択されたオプション

625,000バイト

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

125,000バイト

オプション2

2,500バイト[1]

オプション3

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

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

      SET MSG SUMMARY;
CALC ALL;
   

EssbaseのESSCMDウィンドウまたはアプリケーション・ログに、計算機キャッシュ設定が表示されます。SET MSG SUMMARYとSET MSG DETAILを参照してください。

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

注:

一般に、集約に基づくデータベース計算が多くなり、式計算に基づく計算が少なくなるほど、計算機キャッシュ、インデックス・キャッシュ、データ・ファイル・キャッシュおよびデータ・キャッシュのサイズが、パフォーマンスに与える影響は大きくなります。

初めてデータベースを計算する場合の、計算機キャッシュのサイズ設定

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

計算スクリプトによる計算機キャッシュの変更

デフォルトの計算機キャッシュのサイズを使用するか、計算スクリプト内で計算機キャッシュのサイズを設定できます。サイズを計算スクリプトから設定すると、その設定は計算スクリプトの実行中のみ使用されます。『Oracle Essbaseテクニカル・リファレンス』で計算スクリプトSET CACHEコマンドおよびCALCCACHE構成設定を参照してください。

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

Essbaseでは、開いているデータベースごとに、別個の動的計算キャッシュが使用されます。essbase.cfgファイル内のDYNCALCCACHEMAXSIZE設定により、サーバー上の各動的計算キャッシュの最大サイズが指定されます。デフォルトでは、最大サイズは20 MBです。DYNCALCACHEMAXSIZE設定で指定された最大メモリー領域が割り当てられるまで、Essbaseによってデータ・ブロックに対して動的計算キャッシュ内の領域が割り当てられます。動的計算キャッシュ・サイズの変更を参照してください。

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

データベースごとに、Essbaseによって各データ取得のアプリケーション・ログに2つのメッセージが書き込まれます:

      [Thu Oct 17 11:37:17 2007]Local/Sample///Info(1007125)
The number of Dynamic Calc Non-Store Members = [7 6 0 0 2 ]
   

      [Thu Oct 17 11:37:17 2007]Local/Sample///Info(1007126)
The number of Dynamic Calc Store Members = [0 0 0 0 0 ]
   

最初のメッセージは、取得に要した合計時間を示します。動的計算キャッシュを使用している場合、2つ目のメッセージでは、データの計算機キャッシュ内で計算されたブロックの数(DCC = n)、および一般のメモリーで計算されたブロックの数(non-DCC = n)が表示されます。

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

動的計算キャッシュに関連する構成ファイル設定は、5つあります。これらの動的計算キャッシュ設定の最適な値は、サーバー・マシン上のメモリー、サーバー・マシン上のすべてのデータベースの構成、およびユーザー・クエリーの指定によって異なります。

次の各構成設定の説明に、使用しているシステム用の値の決定方法に対する推奨事項を示します。サイト独自の要件に適合させるには、設定のテストや調整が必要な場合もあります。

  • DYNCALCCACHEMAXSIZE: この設定では、サーバー上の動的計算キャッシュそれぞれにEssbaseで割当てが可能な最大サイズを指定します。

    推奨する設定値= C * S * U

    • Cは、essbase.cfgファイル内の適切なCALCLOCKBLOCK設定の値です(SET LOCKBLOCKコマンドにより、使用するCALCLOCKBLOCK設定が指定されます)。

    • Sは、マシン上のすべてのデータベース内の拡張ブロックの最大サイズです。拡張ブロックのサイズを計算するには、各密次元内のメンバー(動的計算メンバーと動的時系列メンバーを含む)の数を掛け合わせてブロック内のセルの数を求め、そのセルの数に各メンバー・セルのサイズ(8バイト)を乗算します。

      例として、Sample.Basic内の密次元内のメンバー・カウントについて考えます(ラベルのみのメンバーはカウントされません):

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

      • 14 (メジャー、保管済メンバー8、動的計算メンバー6)

      • 4 (シナリオ、保管済メンバー2、動的計算メンバー2)

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

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

    • Uは、最大の同時ユーザー数を抱えるデータベース上で予想される同時ユーザーの最大数です。

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

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

  • DYNCALCCACHEWAITFORBLK: 動的計算キャッシュに対して割り当てられた領域すべてがEssbaseで使用されている場合は、この設定により、キャッシュ内のスペースが使用可能になるまで待機するか、動的計算キャッシュ以外のメモリーでただちにブロックを書き込んで計算するかがEssbaseに指定されます。動的計算キャッシュが小さすぎる場合は、キューに複数のスレッドがあり、それぞれのスレッドがそのデータ・ブロックの計算を待機している可能性があります。

    推奨する設定値= FALSE (デフォルトの値)。

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

    • サーバー・コンピュータに物理メモリーを追加します。

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

  • DYNCALCCACHEBLKTIMEOUT: 動的計算キャッシュ用の空き領域ができるまでEssbaseが待機する場合の、待機時間の長さを設定します。

    推奨する設定値= WT / B

    • WTは、1回のクエリーで待てる最長の時間で、たとえば5秒などにします。

    • Bは、最大のクエリーでアクセスされる論理ブロックの合計数です。

      Bの値を決定するには、アプリケーション・ログのメッセージを調べて、クエリーのDyn.Calc.Cacheの「Big Block Allocs」の最大数を確認します。例を動的計算キャッシュの使用状況の確認に示します。

  • DYNCALCCACHEBLKRELEASE: Essbaseで指定された待機時間が経過しても、動的計算キャッシュ内の領域が使用可能にならない場合、ただちに動的計算キャッシュの外にブロックを記述して計算するか、またはブロックをスワップ・アウトした後、動的計算キャッシュの圧縮ブロック・バッファで一時的に圧縮して、動的計算キャッシュ内に領域を作成するかをEssbaseに指定します。

    推奨する設定値= FALSE (デフォルトの値)。

    メモリーの空き領域が極端に不足している場合にのみ、TRUEに設定してください。

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

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

    • Cは、essbase.cfgファイル内の現在のCALCLOCKBLOCK設定の値です。SET LOCKBLOCKコマンドにより、現在のCALCLOCKBLOCK構成設定が指定されます。

    • Sは、マシン上のすべてのデータベース内の拡張ブロックの最大サイズです。Sは、DYNCALCCACHEMAXSIZE設定の説明のとおりに計算します。

注:

essbase.cfgファイル内のパラメータを変更した後に、新しい値を使用するには、Essbaseサーバーを停止して再起動する必要があります。

具体的な動的計算キャッシュの設定の詳細は、『Oracle Essbaseテクニカル・リファレンス』を参照してください。

キャッシュ設定の微調整

一般的なデータ、ユーザー・アクセス、および標準的環境(サーバーやネットワークなどを含む)のあるサイトでデータベースを使用した後で、Essbaseのパフォーマンスを確認してください。テストなしで最適なキャッシュ・サイズを予測することは困難です。キャッシュ設定は調整が必要になる場合があります。

キャッシュ設定の理解

インデックス・キャッシュとデータ・ファイル・キャッシュ・サイズ(直接入出力を使用している場合)は、Essbaseの最も重要なキャッシュ設定です。一般に、これらのキャッシュを大きくすれば、スワッピングのアクティビティの発生は減少します。ただし、キャッシュ・サイズを大きく設定すれば常にパフォーマンスが向上するとは限りません。キャッシュ・サイズの考慮事項を理解するには、この項全体をお読みください。

インデックス・キャッシュ

大きなインデックス・キャッシュの利点は、ある時点で頭打ちになります。インデックス・キャッシュのサイズがインデックスのサイズ(すべてのボリューム上のすべてのインデックス・ファイルを含む)と等しくなるかそれを超えると、パフォーマンスは向上しなくなります。ただし、将来のインデックスの増大を計上するため、インデックス・キャッシュのサイズを現在のインデックス・サイズより大きく設定できます。インデックス・キャッシュはインデックス・ページで埋められているため、ストレージの最適な使用のためには、インデックス・キャッシュのサイズをインデックス・ページのサイズ(8 KB)の倍数に設定します。インデックス・サイズの見積りの例については、インデックス・ファイルを参照してください。

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

可能であれば、データ・ファイル・キャッシュは、保管されているデータのサイズ(すべてのess*.pagファイルの合計サイズ)に等しいサイズに設定します。そうしない場合は、データ・ファイル・キャッシュを可能なかぎり大きくします。保管されているデータの将来の増大を計上する場合は、データ・ファイル・キャッシュ・サイズを保管されているデータの現在のサイズより大きく設定できます。

注:

データ・ファイル・キャッシュは、直接入出力を利用している場合にのみ使用されます。

データ・キャッシュ

データ・キャッシュは、データ・ファイル・キャッシュの約0.125倍に設定します。ただし、計算によっては、より大きなデータ・キャッシュ・サイズが必要になる場合があります。多数の同時ユーザーが様々なデータ・ブロックにアクセスする場合は、このキャッシュをより大きくする必要があります。

データ・キャッシュとデータ・ファイル・キャッシュのどちらに対してメモリーを割り当てるのかを選択する必要がある場合で、直接入出力を使用しているときは、データ・ファイル・キャッシュを選択するのが一般的です。以前のバージョンのEssbaseからアップグレードする場合は、Oracle Enterprise Performance Management System Installation and Configuration Guideを参照してください。

キャッシュのヒット率の確認

すべてのキャッシュに「ヒット率」があります: これは、要求された情報がキャッシュ内で使用可能である回数の割合です。インデックス・キャッシュ、データ・キャッシュおよびデータ・ファイル・キャッシュのヒット率を確認することで、キャッシュ・サイズを大きくすべきかどうかを決定できます。

  キャッシュのヒット率を確認するには、『Oracle Essbase Administration Servicesオンライン・ヘルプ』の「キャッシュのヒット率の確認」を参照してください。

  • キャッシュのヒット率は、要求された情報がキャッシュ内にすでに存在したことのある回数の割合を示します。ヒット率が高いということは、データがキャッシュ内にある回数がより多いことを示します。この場合、要求されたデータを次のプロセスのためにディスクから取得する必要がないため、パフォーマンスが向上します。ヒット率1.0は、データが要求されるときは常にキャッシュ内に存在することを示します。これは、キャッシュ設定により最大のパフォーマンスです。

  • 「インデックス・キャッシュ・ヒット率」には、Essbaseカーネルが、ディスクから別のインデックス・ページを取得することなく、インデックス・キャッシュ内でインデックス情報を見つけられた成功率が示されます。

  • 「データ・ファイル・キャッシュ・ヒット率」には、Essbaseカーネルが、ディスクからデータ・ファイルを取得することなく、データ・ファイル・キャッシュ内でデータ・ファイル・ページを見つけられた成功率が示されます。

  • 「データ・キャッシュ・ヒット率」には、Essbaseが、データ・ファイル・キャッシュからデータ・ブロックを取得することなく、データ・キャッシュ内でデータ・ブロックを特定できた成功率が示されます。

  • メモリーの割当てを確認します。必要な場合は、メモリーの量を一度に少しずつ追加してください。これは、少量ずつ増やすことで、大量のメモリーを増やしたときと同じ効果が得られることがあるためです。通常は、大きなメモリーを割り当てても、ヒット率はごくわずかしか向上しません。

パフォーマンスの確認

データベースのキャッシュ統計は、performance statistics文法でquery database MaxLステートメントを使用することで確認できます。パフォーマンスの監視。を参照してください。

テスト計算の実行

計算はEssbaseデータベースでプロセッサに最も負荷がかかる操作であるため、テスト計算を実行して、様々なキャッシュ・サイズがEssbaseサーバーのメモリー使用に与える影響を調べる必要があります。