計算パフォーマンスのための設計

Essbaseブロック・ストレージ・キューブの計算パフォーマンスを最適化するには、データ・ブロック・サイズと密度の影響、式と計算スクリプトの効率、およびアウトライン特性(疎ディメンションの順序、レベルの使用、時間ディメンションなど)の調整方法を考慮します。

計算パフォーマンスを最適化するようにデータベースを構成できます。

サイトの最適な構成は、データベースの性質とサイズによって異なります。次のトピックの情報は、ガイドラインとしてのみ使用してください。

ブロック・サイズとブロック密度

Essbaseブロック・ストレージ・キューブで最適な計算パフォーマンスを実現するには、データ・ブロック・サイズおよびブロック密度がパフォーマンスおよびストレージにどのように影響するかを学習します。Essbase WebインタフェースまたはMaxLを使用して、ブロック統計を確認します。

ほとんどの場合、8 KBから100 KBのデータ・ブロック・サイズで最適なパフォーマンスが実現されます。

データ・ブロックが8 KBよりも大幅に小さい場合、通常はインデックスが非常に大きくなり、インデックスのディスクへの書込みおよびディスクからの取得がEssbaseに対して強制されます。このプロセスによって計算が遅くなります。

データ・ブロックが100 KBよりも大幅に大きい場合、高機能計算が効果的に機能しません。「ブロック・ストレージ・キューブの高機能計算」を参照してください。

計算パフォーマンスとデータ・ストレージを最適化するには、データベースの密ディメンションと疎ディメンションの構成を再編成することによって、データ・ブロック密度とデータ・ブロック・サイズのバランスを調整することが必要になる場合があります。次の提案に留意してください。

  • データ・ブロック・サイズを8 KBから100 KBに維持し、ブロック密度を可能なかぎり高くします。

  • 代表的なデータが含まれているキューブの最も期待できる構成のテスト計算を実行します。結果を確認して、最高の計算パフォーマンスを得られる構成を決定します。

  • ハイブリッド・モードの使用を検討します。ハイブリッド・モード・キューブでは、ディメンションの順序を並べ替えるかわりに、解決順序を簡単にカスタマイズできます。

Essbase WebインタフェースまたはMaxLを使用して、データ・ブロックの潜在数と実際の数、データ・ブロック・サイズなどのキューブに関する情報を表示します。


キューブのストレージおよびランタイム統計は、「一般」→「統計」のキューブ情報で確認できます。イメージは、既存のブロック数(374)、ブロック・サイズ(バイト数) (2,112)、保管済で動的に計算されるブロックの最大数(475)、ブロック密度(95%)など、キューブSample Basicのこれらの統計の一部を表示します。

MaxLを使用してブロック統計を表示するための同等の文は次のとおりです:

query database appname.dbname get dbstats data_block;

疎ディメンションの順序

Essbaseブロック・ストレージ・キューブでは、アウトライン順序に小さい疎ディメンションを最初に配置することで、計算パフォーマンスが向上する場合があります。

または、ハイブリッド・モードの使用を検討します。ハイブリッド・モード・キューブでは、ディメンションの順序を並べ替えるかわりに、解決順序を簡単にカスタマイズできます。

アウトライン内の標準の(属性以外の)疎ディメンションの順序を変更することで、計算パフォーマンスを改善できます。含まれているメンバーの数によって標準の疎ディメンションを順序付けし、含まれているメンバーが最も少ないディメンションを最初に配置します。この配置により、次の項目を改善できます:

  • 計算機キャッシュの機能は、大きいディメンション(1000のメンバーを含むディメンションなど)を持つアウトラインのパフォーマンスを10%向上させることができます。

  • メンバーが最も多い標準の疎ディメンションがアウトライン内の最後の標準の疎ディメンションである場合、並列計算(有効な場合)が使用される可能性が高くなります。

増分ロードされたキューブ

データとともに増分(定期的に)ロードされるEssbaseブロック・ストレージ・キューブの場合、アウトラインで時間ディメンションを疎にすることで、計算パフォーマンスが向上する可能性があります。

多くの企業では、データを増分ロードします。たとえば、企業は月ごとにその月のデータをロードする場合があります。

データを増分ロードするときの計算パフォーマンスを最適化するには、時間としてタグ付けされたディメンションを疎ディメンションにします。時間ディメンションが疎である場合、データベースには各期間に対して1つのデータ・ブロックが含まれます。データを期間ごとにロードする場合、該当する期間を含むブロックが少なくなるため、Essbaseによってアクセスされるデータ・ブロックが少なくなります。したがって、高機能計算を有効にしている場合、ダーティとしてマークされたブロックのみが再計算されます。たとえば、3月のデータをロードすると、3月のデータ・ブロックと3月の依存する親のみが更新されます。

ただし、本来は密である時間ディメンションを疎にすると、インデックスのサイズが大幅に増大し、その大規模なインデックスに対応して物理的なI/Oアクティビティが増えるために、パフォーマンスが低下する可能性があります。

時間としてタグ付けされたディメンションが密である場合でも、疎ディメンションの部分的なデータ・ロードを行うときは、高機能計算によっていくつかの利点がもたらされます。たとえば、製品が疎である場合に、1つの製品のデータをロードすると、時間が密で、かつ高機能計算が有効になっていても、Essbaseでは部分的なロードによって影響を受けるブロックのみが再計算されます。

複数のフラット・ディメンションを含むアウトライン

フラット・ディメンションに数千のメンバーを持つEssbaseブロック・ストレージ・キューブの場合、アウトラインにレベルを追加することで計算パフォーマンスが向上する可能性があります。

キューブ・アウトラインに複数のフラット・ディメンションがある場合、計算パフォーマンスに影響することがあります。フラット・ディメンションは親が非常に少なく、それぞれの親に何千もの子があります。言い換えると、フラット・ディメンションには多数のメンバーがあり、レベルは少ないということです。

アウトラインに中間レベルを追加することで、複数のフラット・ディメンションを含むアウトラインのパフォーマンスを改善できます。

式と計算スクリプト

ブロック・ストレージ・キューブの計算スクリプトおよび式を最適化するには、Essbaseがデータ・ブロックを介して実行するサイクル数を減らすためのステップを実行します。

計算スクリプトの式とディメンションを慎重にグループ化することで、計算パフォーマンスが大幅に向上する場合があります。この方法で、Essbaseが計算中にキューブのデータ・ブロックを一巡する回数を可能なかぎり削減できます。

データベース計算が可能なかぎり単純になるように、計算スクリプト内のコマンドを順序付けます。すべての式をアウトラインに適用すること、およびデフォルトの計算(CALC ALL)を使用することを検討します。

「ブロック・ストレージ・キューブの計算スクリプトの開発」および「計算パス」を参照してください。