この項の内容:
この章の情報は、ブロック・ストレージ・データベースのみに適用され、集約ストレージ・データベースとは関係がありません。
関連項目:
データベースの構成の仕方によって、計算パフォーマンスを最適化できます。
サイトの最適な構成は、データベースの性質とサイズによって異なります。次の項の情報は、単にガイドラインとして使用してください。
8 KB - 100 KBのデータ・ブロック・サイズならば、大抵の場合は最適なパフォーマンスが得られます。
データ・ブロックが8 KBよりも大幅に少ない場合、通常インデックスは非常に大きくなり、インデックスのディスクへの書込みやディスクからの取得がEssbaseで強制的に実行されます。このプロセスにより、計算の速度が遅くなります。
データ・ブロックが100 KBよりも大幅に大きい場合は、高機能計算が効率よく機能しません。高機能計算についての理解。を参照してください。
計算パフォーマンスとデータ・ストレージを最適化するには、データベースの密次元と疎次元の構成を調整することによって、データ・ブロック密度とデータ・ブロック・サイズのバランスをとります。次の点に留意してください:
データベース・アウトライン内の標準の(属性以外の)疎次元の順序を変更することで、計算パフォーマンスが向上する場合があります。含まれているメンバーが最も少ない次元を最初に配置して、含まれているメンバーの数によって標準の疎次元を順序付けます。この配列により、サイトによっては多くの点で改善される可能性があります:
多くの企業では、データを増分的にロードします。たとえば、月ごとにその月分のデータをロードする場合があります。
データを増分的にロードするときの計算パフォーマンスを最適化するには、時間としてタグ付けされた次元を疎次元にします。時間次元が疎の場合、データベースにはそれぞれの期間のデータ・ブロックが含まれます。データを期間ごとにロードする場合は、該当の期間を含むブロックが少ないため、Essbaseでアクセスされるデータ・ブロックが少なくなります。したがって、高機能計算が使用可能になっている場合は、ダーティとしてマークされたブロックのみが再計算されます。たとえば、3月のデータをロードする場合は、3月のデータ・ブロックと3月に従属する親のみが更新されます。
ただし、本来密である時間次元を疎にすると、インデックスのサイズが大幅に拡大し、その大きなインデックスに対応して物理的出入力アクティビティの量が増えるために、パフォーマンスの速度が低下する可能性があります。
時間としてタグ付けされた次元が密の場合でも、疎次元に対する部分的なデータ・ロードを行うときは、高機能計算の利点の一部を利用できます。たとえば、製品が疎で、1つの製品のデータをロードする場合は、時間が密で高機能計算が使用可能になっている場合でも、Essbaseでは部分的なロードによって影響を受けるブロックのみが再計算されます。
増分ロードの詳細は、集約ストレージ・データベースへのデータのロードを参照してください。
データベース・アウトラインに複数のフラット次元が含まれている場合は、計算パフォーマンスが影響を受けることがあります。フラット次元の親の数は非常に少なく、それぞれの親に何千もの子があります。言い換えれば、フラット次元には多数のメンバーがあり、レベルは少ないことになります。
データベース・アウトラインに中間レベルを追加することで、複数のフラット次元を含むアウトラインに対するパフォーマンスを改善できます。
計算スクリプトの式と次元を慎重にグループ化することで、計算パフォーマンスを大幅に向上できる場合があります。この方法で、計算中にデータベース内のデータ・ブロックがEssbaseによって循環される回数を、可能なかぎり少なくできます。
計算スクリプトのコマンドを、データベース計算が可能なかぎり簡単になるように順序付けます。すべての式をデータベース・アウトラインに適用することと、デフォルト計算(CALC ALL)を使用することを検討してください。この方法で、計算パフォーマンスを向上できる場合があります。
ブロック・ストレージ・データベース用の計算スクリプトの作成および計算パスを参照してください。
計算スクリプトで次の各コマンドを使用すれば、Essbaseでのデータベースの計算に関するアプリケーション・ログの情報を表示できます。
計算スクリプトでSET MSG ONLYを使用して、計算のシミュレーションを実行できます。シミュレート計算により、同じデータとアウトラインに基づく実際の計算のパフォーマンスを分析するために役立つ結果が得られます。
SET NOTICE HIGHなどのコマンドでシミュレート計算を実行することで、それぞれの疎次元の計算にかかる相対的な時間を把握できます。その後、1つ以上の次元で実際の計算を実行することで、フル計算にかかる時間を見積ることができます。これは、シミュレート計算の実行にかかる時間が、実際の計算の実行にかかる時間に比例するためです。
たとえば、計算を9:50:00 AMに開始し、最初の通知のタイムスタンプが09:50:10 AM、2番目のタイムスタンプが9:50:20 AMの場合、この部分の計算にはそれぞれ10秒かかったことがわかります。次に、最初の部分のみで実際の計算を実行し、その実行に30秒かかったことに気づいた場合、その他の部分にも30秒かかることがわかります。合計2つのメッセージがあるとすると、実際の計算には約60秒((20 / 10 * 30 = 60秒)かかることになります。
次の項目では、シミュレート計算の実行方法、およびシミュレート計算を使用して計算時間を見積る方法について説明します。
計算時間を見積る場合は、実際のデータベースに基づいたデータ・モデル上でシミュレート計算を実行する必要があります。
シミュレート計算を実行するには:
シミュレート計算を実行した際、結果を記録し、その結果を使用して実際の計算時間を見積ります。
合計計算時間を見積るには:
SET NOTICE HIGHで生成されたアプリケーション・ログのメッセージが、どのくらいの間隔で生成されたかをすべて確認します。
表185を参照してください。
次の計算方法を使用して、実際の計算にかかる時間を見積ります:
次の問題を除けば、シミュレート計算では通常、誤差5%の範囲で計算時間を見積ることができます:
これらの要素が存在する場合、Essbaseでのシミュレート計算が30 - 40% (SET NOTICE HIGHによって生成されるメッセージの30 - 40%)に達したときに、この見積りテクニックによって計算時間がより厳密に予測されます。『Oracle Essbaseテクニカル・リファレンス』を参照してください。
データベース内の現在のブロック数をもとに、CALC ALLで作成されるブロックの数を見積ることができます。
対話型モードを使用して、計算の結果として作成されるデータベース・サイズを見積るには、次の操作を実行します:
MaxLシェルを起動し、Essbaseにログオンして、アプリケーションとデータベースを起動します。例:
essmsh login username password ; alter system load application appname ; alter application appname load database dbname ;
アプリケーションおよびデータベース名を指定して次のMaxLステートメントを入力し、ブロック数として戻される値を確認します:
query database appname . dbname get estimated size;
次の項では、並列計算と、並列計算によってサイトでパフォーマンスを向上させる方法について説明します。
計算がどのように呼び出されたかにかかわらず、Essbaseでは次のいずれかのモードで計算を実行できます:
シリアル計算はデフォルトです。シリアル計算では、各計算パスは単一のプロセッサで実行されるようスケジュールされます。計算スクリプトから呼び出された場合、計算は、計算スクリプトに現れる順に実行されます。
並列計算では、各計算パスがサブタスクに分割されます。別のサブタスクとは独立して実行できるサブタスクは、最高64または128のスレッドで同時に実行されるようスケジュールされます。32ビットのプラットフォームで稼働中のブロック・ストレージ・データベースは最高64のスレッドをサポートします。64ビットのプラットフォームで稼働中のブロック・ストレージ・データベースと、集約ストレージ・データベース(32ビットまたは64ビットのプラットフォームのどちらで稼働中の場合も)は、最高128のスレッドをサポートします。各スレッドは異なるプロセッサ上にある場合があります。
Essbaseでは、並列計算を有効にした計算パスを実行する前に、必ず並列計算の使用が可能かどうか評価されます。
Essbaseでは、アウトラインと、各計算パスで要求される計算が分析されます。1つの計算で複数のパスが要求される場合があることに注意してください。動的計算、2パスとしてタグ付けされたメンバーの存在、またはある種の相互依存性を引き起こす計算などの状況によって、複数のパスの必要性が生じる場合があります。計算パスを参照してください。
Essbaseで並列計算が可能と判定されると、Essbaseでは計算が互いに独立した小さなタスクに分割されます。計算の間、Essbaseではこれらの小さなタスクは同時に実行されます。
ただし、パスに含まれている式の間に複雑な相互依存性がある場合は、並列計算が使用可能になっていても、Essbaseではシリアル計算が使用されます。このような相互依存性があると、並列計算が不可能になります。
アウトラインの構造とアプリケーションの設計によって、並列計算を使用可能にすることで計算パフォーマンスを改善できるかどうかが決まります。並列計算を使用可能にする前に、次のガイドラインについて検討してください。これらのガイドラインは、並列計算の利点を十分に活用するために役立ちます:
アンコミット・アクセスの分離レベルを使用してください。コミット・アクセスの分離レベルを使用する場合、並列計算はサポートされません。アンコミット・アクセスを参照してください。
計算の中にある1つ以上の式によって、Essbaseで使用可能になっていても並列計算を使用できない場合があります。並列計算の設定にかかわらずシリアル計算を強制実行する可能性のある式の説明については、式による制限を参照してください。
計算タスクは、アウトラインの最後のnの疎次元に従って生成されます。タスクの識別に使用されるこれらの疎次元は、タスク次元と呼ばれます。タスク次元の数であるnは、Essbaseによって動的に選択されるか、ユーザーがessbase.cfgファイルのCALCTASKDIMSに値を指定することで数値が上書きされます。
アウトライン内の疎次元は、(MaxLステートメント「query database DBSNAME get dbstats dimension」で報告されるように)次元の実際のサイズに基づいて、最も小さいものから最も大きいものの順に並べます。順序に関するこの推奨事項は、計算機キャッシュ・サイズの最適化のための推奨事項や、その他のアウトラインに関する推奨事項と一貫性があります。(最後の疎次元よりも多くの)追加の次元の使用が必要な場合の説明と、使用される疎次元の数を増やす方法については、並列計算の追加的タスクの特定を参照してください。
並列計算は、パーティション化されていないアプリケーション、および次のようなパーティション・アプリケーションに対して効果的です:
透過パーティション(計算がターゲット・データベースで行われる場合)。essbase.cfgファイル内のCALCTASKDIMS、または計算スクリプト内のSET CALCTASKDIMSで指定する疎次元の数は、1 (デフォルト値)に設定する必要があります。透過パーティションでの並列計算の使用に課せられる制限の詳細は、透過パーティションによる制限を参照してください。CALCTASKDIMSまたはSET CALCTASKDIMSの使用の詳細は、並列計算の追加的タスクの特定を参照してください。
データベースに増分再構築を選択し、アウトラインに加えた変更のために再構築が保留となっている場合は、並列計算は使用しないでください。予測不可能な結果が生じる可能性があります。
計算やデータ更新などの更新トランザクションは、MDXクエリーやレポート・スクリプトより多くのリソースを消費する要求です。ストレージ・デバイスが高速な場合、Essbaseでは、より多くの並列計算スレッドを実行して、妥当なスループットを実現することができます; ストレージ・デバイスが高速でない場合は、Essbaseで実行可能な並列計算スレッドやその他の更新スレッドの数は少なくなります。更新トランザクションの数は、Essbase.cfg設定のMAXACTIVEUPDATETRANSACTIONSを使用して制御できます。詳細は、『Oracle Essbaseテクニカル・リファレンス』のMAXACTIVEUPDATETRANSACTIONSに関するトピックを参照してください。
次の項では、並列計算と他のEssbase機能との関係について説明します。
並列計算のパフォーマンスを最大化するために、最も大きな疎次元をアウトラインの最後に配置すると、取得パフォーマンスの速度が低下する場合があります。クエリーのパフォーマンスの最適化を参照してください。
ある式が存在することによって、シリアル計算が強制的に実行される場合があります。次のような式の配置により、シリアル計算が強制的に実行される可能性があります:
密メンバー(すべての保管済メンバー、および保管済メンバーが依存するあらゆる動的計算メンバーを含む)に設定された式によって、並列計算のタスクを識別するために使用される、次元内のメンバーに相関関係が発生する場合。
計算スクリプト内で、@VAR、@ARRAY、@XREFまたは@XWRITEを使用して宣言された変数への参照が、式に含まれる場合。
@XREFを使用する疎次元メンバーの式で、疎のメンバーの次元がフル計算される場合。@XREFは、他の保管済メンバーに依存しない密の動的計算メンバーにある場合、バッチ計算中にシリアル計算を強制実行しません。
メンバーの式によって循環的な依存が発生する場合。たとえば、メンバーAにメンバーBを参照する式があり、メンバーBにメンバーCを参照する式があり、メンバーCにはメンバーAを参照する式があるような場合。
密次元メンバーの式に、他の疎次元のメンバーへの参照が含まれる場合。
並列計算を妨げる可能性のある式を使用する必要がある場合は、その式のメンバーを動的計算としてマークするか、その式を計算のスコープから除外できます。式によって並列計算が妨げられるかどうかを確認するには、アプリケーション・ログを確認します。並列計算の監視を参照してください。
計算パスの開始時に、Essbaseで計算機キャッシュのサイズと並列性の度合いが確認され、その後、最大のパフォーマンスを得るための適切な計算機キャッシュのビットマップ・オプションが使用されます。そのため、並列計算に使用されるビットマップ・オプションは、シリアル計算に使用されるものとは異なる場合があります。
たとえば、Essbaseでシリアル計算が実行され、複数のビットマップと単一のアンカー次元が使用されるとします。計算機キャッシュを明示的に変更しないと、Essbaseでは単一のビットマップと単一のアンカー次元のみを使用して並列計算が実行される可能性があります。
ビットマップ・オプションを制御する計算機キャッシュ・モードは、計算パスの開始時に、アプリケーション・ログの次のような項目を確認することで判断できます:
Multiple bitmap mode calculator cache memory usage has a limit of [50000] bitmaps.
複数のビットマップ・モードで並列計算を使用している場合は、メモリー使用率が高くなることがあります。このような場合は、構成設定PARCALCMULTIPLEBITMAPMEMOPTを使用して、複数のビットマップ・モードでのメモリーの使用を最適化できます。この設定は、MULTIPLEBITMAPMEMCHECKと一緒に使用することも、別個に使用することもできます。PARCALCMULTIPLEBITMAPMEMOPTを使用可能にするには、essbase.cfgファイルに次の行を追加します:
PARCALCMULTIPLEBITMAPMEMOPT TRUE
計算機キャッシュのサイズ設定を参照してください。
透過パーティションが含まれる並列計算には次のような制限があります:
CALCTASKDIMSまたはSET CALCTASKDIMSを1 (デフォルト)に設定して、固定次元を1つのみにする必要があります。
複数のビットマップを使用できるように、計算機キャッシュを増やす必要があります。ビットマップ・オプションを制御する計算機キャッシュ・モードは、計算パスの開始時に、次のようなアプリケーション・ログの項目を確認することで判断できます。
Multiple bitmap mode calculator cache memory usage has a limit of [50000] bitmaps.
計算機キャッシュのサイズ設定を参照してください。
Essbaseでは、「内部コミットまでのブロック数」というデータベース設定で指定されたコミットのしきい値が確認されます。この設定により、内部コミットの前に書込みできるデータが10 MB未満である必要がある場合は、計算パスの実行中のコミットのしきい値が、Essbaseにより自動的に10 MBに増やされます。この設定が10 MBより大きい場合は、Essbaseでは設定値が使用されます。
一時的なしきい値の増加が発生した場合は、それを示すメッセージがEssbaseによりアプリケーション・ログに書き込まれます。
計算に10 MB以上のディスク・スペースを余計に割り当てられる場合は、パフォーマンスを改善するためコミットのしきい値(つまり、コミット発生前のブロック数)を非常に大きな数に増やすことを検討してください。
アンコミット・アクセスを参照してください。
サーバーの構成ファイルまたは使用する計算スクリプトを調べれば、並列計算が使用可能になっているかどうかを確認できます。
サーバーの構成ファイルで、並列計算が使用可能になっているかどうかを確認するには:
並列計算を使用するには、次のいずれかの方法により、並列計算をサーバー・レベル、アプリケーション・レベルまたはデータベース・レベルで使用可能にします:
並列計算設定では、次のような標準的な優先度ルールが使用されます:
並列計算をサーバー・レベルで設定すると、サーバー上のすべてのアプリケーションとデータベースで実行されるすべての計算で、並列計算が使用可能になります。構成ファイル内で並列計算をサーバー・レベルで設定してから、アプリケーション固有またはデータベース固有のエントリを計算スクリプトに追加することで、個々のアプリケーションまたはデータベースの並列計算を使用不可にできます。
並列計算を使用可能にするには:
構成ファイル内で並列計算を使用可能にする予定の場合は、現在のステータスを調べて、エントリが存在するかどうかを確認します。
現在の並列計算設定の確認のプロセスを使用します。
サーバーのessbase.cfgファイルにCALCPARALLELを追加またはこれを変更するか、計算スクリプトにSET CALCPARALLELを追加します。
必要な場合は、並列計算のタスクを特定するために、Essbaseで複数の疎次元を使用可能にします。
並列計算の追加的タスクの特定のプロセスを使用します。
オラクル社は、CALCPARALLELの値を、計算に使用できるプロセッサの数より1つ小さい数に設定することをお薦めします。これにより残りのプロセッサを、オペレーティング・システムまたはキャッシュからダーティ・ブロックの書出しを行うEssbaseプロセスで使用できます。
Essbaseでは、デフォルトで、反復的な手法を使用して、並列計算に使用する最適な数のタスク次元が選択されます。
必要な場合は、Essbaseで、並列計算に特定の数(n)のタスク次元を使用するよう指定できます。たとえば、最後の疎次元のメンバーにFIXステートメントがある場合、アウトラインから最後の1つ前にある疎次元も含めることができます。これら2つの次元の一意のメンバーの各組合せは、潜在的なタスクとして特定され、より多くの小さなタスクが作成されて、並列処理の機会が増え、ロード・バランシングが改善されます。
現在の並列計算設定の確認を参照してください。CALCPARALLEL (または計算スクリプト内のSET CALCPARALLEL)がない場合、CALCTASKDIMSは効力を持ちません。
オプション: Essbaseでは、並列計算に使用するデフォルトの数(n)のタスク次元が選択され、この数は情報メッセージとしてアプリケーション・ログ・ファイルに表示されます; たとえば、次のようなメッセージが表示されます: [2]タスク次元を使用して並列化しています。デフォルトのnの設定を上書きするには、サーバーのessbase.cfgファイルにCALCTASKDIMSを追加または変更するか、スクリプトの最初に計算スクリプト・コマンドのSET CALCTASKDIMSを使用します。
サーバーのessbase.cfgファイルにCALCTASKDIMSを追加またはこれを変更した場合は、Essbaseを再起動します。
並列計算に関連するイベントを、アプリケーション・ログで表示できます:
Essbaseでは、それぞれの計算パスについて、次のような様々なタイプの情報をアプリケーション・ログに書き込んで、並列計算をサポートします:
並列計算を使用可能にしていて、Essbaseにより並列計算が実行可能であると判断されている場合は、Essbaseにより、アプリケーション・ログに次のようなメッセージが書き込まれます:
Calculating in parallel with
n
threads
並列計算の使用を妨げる(シリアル計算を強制的に実行する)ような式については、Essbaseにより、アプリケーション・ログに次のようなメッセージが書き込まれます:
Formula on ((or backward dependence from) mbr memberName prevents calculation from running in parallel.
memberNameは、該当する式が存在しているメンバーの名前を表します。アプリケーション・ログでこのようなメッセージを確認し、式を削除することを検討できます。また、可能な場合は、該当のメンバーを動的計算としてタグ付けして、それらのメンバーが計算パスで機能しないようにすることを検討できます。
同時実行が可能なタスクの数(CALCPARALLELやSETCALCPARALLELの値ではなく、データに基づくもの)を示す次のようなメッセージが、Essbaseによりアプリケーション・ログに書き込まれます:
Calculation task schedule [576,35,14,3,2,1]
この例のメッセージは、576のタスクを同時に実行できることを示しています。576のタスクが完了した後、他の35のタスクを同時に実行できる、という具合に続きます。
並列計算の効果は、最初のいくつかの段階で最も大きく、同時に実行されるタスクが少なくなっていくにつれて減少します。
並列処理の度合いは、タスク・スケジュールにあるタスクの数によって異なります。この数が多いほど、並行して実行できるタスクの数が増え、パフォーマンスが向上します。
空の(計算が含まれない)タスクの数を示すメッセージが、Essbaseによりアプリケーション・ログ・ファイルに書き込まれます:
[Tue Jun 27 12:30:44 2007]Local/CCDemo/Finance/essexer/ Info(1012681) Empty tasks [291,1,0,0,0,0]
この例では、レベル0のタスクのうち291が空であることがEssbaseにより示されています。
計算タスク・スケジュールで指定されたタスク数に対する、空のタスク数の比率が50%を超える(たとえば、291 / 576)場合は、データ・モデル内の希薄さ(密度の低さ)により、並列処理を実行してもパフォーマンスが改善されない可能性があります。
データベース・アウトラインで式を慎重に使用することで、計算パフォーマンスが大幅に向上する場合があります。たとえば、式を計算スクリプトに設定するかわりに、データベース・アウトラインにメンバーの式を設定することで、計算パフォーマンスが向上する場合があります。ブロック・ストレージ・データベース用の式の作成。を参照してください。
次の項で、パフォーマンスに影響を与える式の問題を扱う方法について説明します。
データベース・アウトラインを使用して値をロール・アップする方が、式を使用して値を計算するよりも効率的です。たとえば、図154に示すように、メンバー100に対するメンバー100-10、100-20および100-30の集計の方が、次の式をメンバー100に適用するより効率的です:
100-10 + 100-20 + 100-30
簡単な式を使用するときに、ブロック・サイズが異常なほど大きくはない場合は、計算パフォーマンスに大きな影響を与えることなく、疎次元または密次元のいずれかのメンバーに式を設定できます。ブロック・サイズが大きくなるにつれて、簡単な式による計算パフォーマンスの影響は大きくなります。ブロック・サイズと計算パフォーマンスの間の関係の詳細は、ブロック・サイズとブロック密度を参照してください。
簡単な式とは、比率やパーセンテージなどのことで、次の要件を満たすものです:
式による計算パフォーマンスの影響の詳細は、ボトムアップ計算とトップダウン計算を参照してください。
複雑な式を使用する場合、次のガイドラインを適用すればパフォーマンスを改善できます:
計算スクリプトでFIXコマンドを使用して、必要なデータ・ブロックのみを計算します。FIXコマンドの使用を参照してください。
データベースの密度(可能なデータ・ブロックに対する既存のデータ・ブロックの比率)を高くします。
ブロック・サイズとブロック密度を参照してください。
疎次元のメンバーを適用すると、複雑な式では計算オーバーヘッドがより高くなり、そのためパフォーマンスは低下します。複雑な式が存在することにより、複雑な式を含むメンバーに関連するすべての既存のデータ・ブロックとともに、計算可能なすべてのデータ・ブロックに対してもEssbaseで計算を実行することが必要になるため、この問題が発生します。疎次元メンバーに関係関数または財務関数が存在すると、既存のデータ・ブロックとともに、計算可能なすべてのデータ・ブロックに対してEssbaseで計算の実行が必要になり、オーバーヘッドはさらに高くなります。
したがって、関係関数または財務関数を含む複雑な式では、関係関数または財務関数を含まない複雑な式よりも大きなオーバーヘッドの増加が発生します。
複雑な式による計算パフォーマンスの影響の詳細は、ボトムアップ計算とトップダウン計算を参照してください。
どの場合でも、存在可能なデータ・ブロック数に対する、既存のデータ・ブロック数の比率が低くなるにつれて、計算パフォーマンスのオーバーヘッドは高くなり、パフォーマンスが低下します。
SET FRMLBOTTOMUP計算コマンドを使用して、大規模なデータベース・アウトライン内の疎次元での式の計算を最適化できます。このコマンドを使用すれば、それ以外の場合はトップダウンで計算される疎のメンバー式を、強制的にボトムアップで計算できます。ボトムアップ計算の強制実行を参照してください。
トップダウンの式に対してボトムアップの計算を強制すると、CALC ALLコマンドとCALC DIMコマンドを効率的に使用できます。『Oracle Essbaseテクニカル・リファレンス』のSET FRMLBOTTOMUP計算コマンドとCALCOPTFRMLBOTTOMUP構成設定に関する説明を参照してください。
疎次元のメンバーに定数を割り当てると、そのメンバーを含んでいる疎次元メンバーの各組合せに対して、Essbaseで自動的にデータ・ブロックが作成されます。
たとえば、メンバーまたは計算スクリプトの式に次の式が含まれているとします:
California = 120;
この式では、「California」は疎次元のメンバーで、120は定数値です。「California」のすべての存在可能なデータ・ブロックがEssbaseで自動的に作成され、すべてのデータ・セルに値120が割り当てられます。何千ものデータ・ブロックが作成される場合もあります。パフォーマンスを向上させるには、不要な値を生成する式を作成しないでください。
この例では、「Colas」は疎次元「製品」、「Actual」は密次元「シナリオ」、「Misc」は密次元「メジャー」のメンバーです。「California」(市場次元)、「Actual」(シナリオ次元)、「Misc」(メジャー次元)、「Colas」(製品次元)、および年次元のメンバーの交差には、値120が割当てられています。これは、年の特定のメンバーがスクリプトで指定されていないためです。
Sample.Basicには2つの疎次元のみ含まれているため、この例によって影響を受けるのは1つのブロックのみです。3つ以上の疎次元が存在する場合は、「California」と「Colas」のすべての疎次元の組合せに対して、必要に応じてEssbaseでブロックが作成されます。新しいブロックでは、Essbaseによりメジャーとシナリオ(値120が割り当てられるもの以外)の値が#MISSINGに設定されます。
疎次元のメンバーに非定数値を割当てると、ブロックは「等式によるブロックの作成」の設定に基づいて作成されます。「等式によるブロックの作成」の設定は、データベース・レベルで、データベース・プロパティとして定義されます(非定数値を参照)。
計算スクリプトでは、「等式によるブロックの作成」設定を一時的に上書きできます。「West」に値がなく、「等式によるブロックの作成」を使用可能にしている場合の、次の計算による影響を考えてください:
West = California + 120;
「West」のすべての子に対応するブロック値が#MISSINGの場合でも、「West」とのすべての疎メンバーの交差に不要なブロックが作成されることがあります。大規模なデータベースでは特に、不要なブロックの作成と処理に余分な処理時間が必要になります。
疎次元のメンバーに非定数値を割り当てるときに、ブロックの作成を制御するには、次のスクリプトに示すように、SET CREATEBLOCKONEQ ON | OFF計算コマンドを使用します:
FIX (Colas); SET CREATEBLOCKONEQ OFF West = California + 120; SET CREATEBLOCKONEQ ON East = “New York” + 100; ENDFIX
「等式によるブロックの作成」設定はスクリプト開始時は使用不可になっているため、「West」ブロックは「West」の子の値が存在する場合のみ作成されます。後になって、「等式によるブロックの作成」設定が使用可能になるため、「East」のすべてのブロックが作成されます。
次の状況で次元間演算子(->)を使用するときは、注意を要します:
計算スクリプトのパフォーマンスを向上させるために、等式の左辺で次元間演算子が含まれた式を使用するかわりに、計算スクリプト内でFIXを使用して式の使用を制限します。
たとえば、Sample.Basicで「Jan」->「Sales」の値を5%増加させるとします。関連するメンバーの組合せのみを計算することでパフォーマンスを向上させるには、FIXコマンドを使用します:
FIX(Jan) Sales = Sales * .05; ENDFIX
FIXコマンドを使用すると、指定したメンバーの組合せのみに対してEssbaseで式が計算されます。この例では、「Jan」が含まれる組合せのみに対して式が計算されます。
このテクニックを、時間のかかる次元間演算子を使用するアプローチと比較してみます。前述の例の場合、データベース・アウトライン内の「Sales」メンバーに次の式を指定します:
Sales(Sales -> Jan = Sales -> Jan * .05;)
Essbaseでデータベースを循環するにつれて、計算が必要なのは1月の組合せのみであっても、次元の「時間」タグが付けられたメンバー(1月、2月、3月など)を含むすべてのメンバーの組合せに対して、式が計算されます。
FIXコマンドの使用および『Oracle Essbaseテクニカル・リファレンス』を参照してください。
密次元の等式で次元間演算子を使用すると、次の2つの条件がともに当てはまる場合には、必要なブロックがEssbaseで自動的には作成されません:
次の方法でブロックを作成して、パフォーマンスの問題を回避します。
結果としてメンバーが、密次元からではなく疎次元から得られたことを確認します。次の例では、結果として得られたメンバー「Budget」は疎次元のメンバーです:
FIX(Sales) Budget = Actual * 1.1; ENDFIX FIX(Expenses) Budget = Actual * .95; ENDFIX
DATACOPY計算コマンドを使用して、必要なブロックを作成してから、計算します。DATACOPYを使用した既存ブロックのコピーを参照してください。
密のメンバーの等式が含まれている、次のようなメンバー式を使用します。
FIX(Sales, Expenses) Budget (Sales = Sales -> Actual * 1.1; Expenses = Expenses -> Actual * .95;) ENDFIX
トップダウン計算は、ボトムアップ計算より効率が低くなります。これは、必要以上のブロックが計算されるためです。トップダウン計算はボトムアップ計算より効率が低くなりますが、トップダウン計算は、確実に正しい計算結果を得るために必要な場合があります。
次のトピックでは、様々な状況でどの計算を使用すべきかを説明します:
Essbaseでは、データベース・アウトラインのフル計算を実行するために、ボトムアップ計算またはトップダウン計算という2つの計算方法のいずれかが使用されます。デフォルトでは、Essbaseではボトムアップ計算が実行されます。
ボトムアップ計算の場合は、データベースの計算前に計算が必要なデータ・ブロックがEssbaseにより決定されます。それにより、計算の必要なブロックのみがEssbaseで計算されます。計算はブロック番号が最も小さい既存のブロックから始まり、ブロック番号が最も大きい既存のブロックに達するまで、番号順に各ブロックに対して実行されます。ブロックの計算順序を参照してください。
データベース・アウトラインに複雑なメンバー式が含まれている場合は、Essbaseで該当するメンバーに対するトップダウン計算が実行されます。
簡単な式や複雑な式の、ボトムアップ計算およびトップダウン計算との連携の詳細を理解するには、次の各項を参照してください:
簡単な式の場合は、Essbaseでボトムアップ計算を実行することで、フル計算の実行前に計算の必要のあるブロックが決定されます。たとえば、メンバーに基づく簡単な式(A = B + Cなど)では、Aは、データベース内にBまたはCが存在する場合のみ計算されます。つまり、計算の開始前に、BとCに対する式の依存関係がわかります。
計算の開始前に、Essbaseではデータベース・アウトラインが検索され、次元間の参照が含まれているメンバー式など、トップダウン計算が必要な複雑な式がマークされます。Essbaseではトップダウン式を持つメンバーに達すると、そのメンバーに対するトップダウン計算が行われます。
メンバーに基づく式が複雑なときは、そのメンバーに対して存在可能なすべてのブロックを調べて、既存のブロックの変更または新しいブロックの作成の必要があるかどうかを確認する必要があります。ブロックの、他のブロックに対する依存関係を計算の開始前に確認することは困難です。トップダウンの方法では、式を実行するためにEssbaseで計算対象のブロックを検索する必要があるため、計算パフォーマンスが低下します。
式をコンパイルすると、その式がトップダウンで計算される場合は、Essbaseによりアプリケーション・ログ・ファイルにメッセージが記録されます。
A = B -> D + C -> D
この式を計算するために、EssbaseでAのあらゆる組合せを検討して、B -> DまたはC -> Dが存在するかどうかを判断する必要があります。
複雑な式の使用を参照してください。
次の項では、ブロック・ストレージ・データベースで使用されるキャッシュについて説明します。集約ストレージ・キャッシュについては、集約ストレージ・キャッシュの管理を参照してください。
データベースの計算時には、Essbaseではデータベース・アウトライン内の1メンバー当たり約30バイトのメモリーが使用されます。そのため、データベースに5,000のメンバーがある場合は、Essbaseではデータベースの計算に約150 KBのメモリーが必要になります。
計算スクリプトを組み合せることで、余分なメモリーの使用を回避できます。また、単一の計算スクリプトで並列計算を使用することで、パフォーマンスを向上させることができます。並列計算の使用を参照してください。 |
Essbaseでは、計算パフォーマンス(特に大規模な計算)を最適化するために、メモリーが使用されます。データベース・アウトラインのサイズを変更する場合を除き、使用されるメモリーの量は制御できません。ただし、メモリー・キャッシュのサイズによってEssbaseでの計算を最適化できます。
Essbaseでは、次のメモリー・キャッシュを使用して、メモリー使用率を調整します:
初めてデータベースを計算するときに、計算パフォーマンスのために非常に重要なものは、計算機キャッシュのサイズです。可能であれば、計算機キャッシュを、Essbaseで最適な計算機キャッシュ・オプションを使用するために十分な大きさにしてください。 |
キャッシュのサイズ設定を参照してください。変更を加える前に、トピック全体をお読みください。
ブロックの計算時には、Essbaseではブロックおよびブロックの子が含まれるすべてのブロックがロックされます。Essbaseではブロックが計算されると、ブロックおよび子が含まれるすべてのブロックは解放されます。
デフォルトでは、Essbaseではブロックの計算時に最高100ブロックが同時にロックされます。このブロック・ロックの数は、ほとんどのデータベース計算では十分です。疎次元の式を計算する場合は、Essbaseで必要な子ブロックすべてを同時にロックできると、最も効率がよくなります。したがって、疎次元の式を計算するときに、集計する子が非常に多い場合(100を超える場合など)、100よりも大きいロック数を設定することをお薦めします。この数を増やすことで、Essbaseで必要なすべてのブロックを確実にロックでき、パフォーマンスが損われることはありません。
Essbaseによるロック動作は、分離レベル設定によって異なります。コミット・アクセスでのロックおよびアンコミット・アクセスでのロックを参照してください。
計算スクリプトのSET LOCKBLOCKコマンドをessbase.cfgファイルのCALCLOCKBLOCK設定とともに使用することで、ブロックの計算中にEssbaseで同時にロックできるブロックの最大数を指定できます。デフォルト設定を変更せず、計算中にデフォルトの100ブロックでは不十分な場合、要求した時間よりも長い時間が計算に必要になる場合があります。
Essbaseでは、ブロック・ロック・システムを使用して、ユーザーに対する同時アクセスが管理されます。このシステムにより、特定のデータ・ブロックを更新または計算できるのが、確実に一度に1人のユーザーのみになります。Essbaseでのブロックのロックとデータのコミットの処理方法は、分離レベル設定によって変わります。
Essbaseでデータ・ブロックが計算されると、排他ロックが生じて、他のユーザーはそのデータ・ブロックを更新または計算できなくなります。ただし、それらのユーザーが読取り専用アクセス権を持つことはできます。Essbaseでの計算が終了すると、ブロックは解放されます。他のユーザーは、適切なセキュリティ・アクセス権を持っている場合は、その後でブロックを更新できます。
ユーザーがデータ・ブロックを更新しているとき、ブロックはロックされています。データベース計算で、別のユーザーによって更新されるデータ・ブロックが必要な場合、次のような状況のいずれかになるまで計算が待機されます:
Essbaseでは、計算がデータ・ブロックの解放待ちになっていることを示すメッセージは出力されません。
ロックされたブロックの解放待ちによる計算の遅延が生じないようにするには、Essbaseのセキュリティ・オプションを使用して、次のいずれかを実行します:
セキュリティ・オプションの詳細は、Essbaseネイティブ・セキュリティ・モードでのユーザーの切断および要求の終了およびEssbaseネイティブ・セキュリティ・モードでのパスワードとユーザー名の管理を参照してください。
Essbaseによるロックとトランザクションの処理方法については、Essbaseによるトランザクションの処理方法の理解およびデータ・ロックを参照してください。
アプリケーションに適している場合は、データベース・アウトラインで会計次元のメンバーを2パスとしてタグ付けすることで、パフォーマンスを大幅に改善できます。データと計算のニーズの組合せによっては、正確を期すために、2パスのタグ付けのかわりに計算スクリプトを使用して式を2回計算する必要がある場合があります。
次の項を使用して、2パス計算の詳細を理解してください。会計次元のメンバーを2パスとタグ付けしてパフォーマンスを改善できるかどうか、または計算スクリプトを使用して式を2回計算する必要があるかどうかを判断してください。この項では、2パス計算を使用可能にする方法や、2パス計算の計算スクリプトを作成する方法についても説明します。
2パス計算と属性メンバーの相互作用については、表18を参照してください。
2度計算する必要があるメンバー式に2パス計算を使用すれば、正確な値を算出できます。
2パスの式は、可能な場合は常に、Essbaseによりデータ・ブロック・レベルで計算され、主計算と同時に計算されます。したがって、Essbaseにデータベース全体で特別な計算パスを実行する必要はありません。ただし、場合によっては、Essbaseには、データベース全体で特別な計算パスが必要になります。
Essbaseでの2パスの式の計算方法は、時間としてタグ付けされた次元と勘定科目としてタグ付けされた次元があるかどうかと、時間次元と会計次元の密と疎の構成によって異なります。
Profit % = Profit % Sales
表186は、密次元としてメジャーと年を持つデータ・ブロックのサブセットを示しているとします。メジャーは勘定科目としてタグ付けされ、年は時間としてタグ付けされています。AGGMISSG構成設定はオフ(デフォルト)になっています。
データ値は入力セルにロードされています。Essbaseにより、番号1から7が表示されたセルがこの順序で計算されます。たとえば、Profit % -> Janが最初に計算されます; Profit % -> Qtr1には、複数の集計パスがあります。
データベース構成によってセルの計算順序がどのように変わるかについては、セルの計算順序を参照してください。 |
Essbaseで、利益率-> 1月、利益率-> 2月、利益率-> 3月、および利益率->第1四半期(表内の1、2、3、4)に対して、式Profit % Salesが計算されます。
Essbaseで、1月、2月および3月の値(表内の5、6)が加算され、利益->第1四半期と売上高->第1四半期が計算されます。
Essbaseで、Profit % -> Jan、Profit % -> Feb、およびProfit % -> Mar(表内の7)の値が加算され、Profit % -> Qtr1が計算されます。このようなパーセンテージの加算によって値125%が得られますが、これは正しい結果ではありません。
データベース・アウトラインでProfit%に2パスとタグ付けすると、EssbaseではProfit % Salesの式を使用して利益率の値が再計算され、正しい結果が得られます。
複数の計算パスの詳細については、計算パスを参照してください。
次の項では、2つのシナリオを詳しく説明します。高機能計算を使用している場合は、データベースの構成に合うシナリオを使用してください。それぞれのシナリオでは、Essbaseで2パスの式を正確に計算できるようにする方法が示されています。
これらのシナリオでは、高機能計算の概念を理解していることが必要です。高機能計算についての理解。を参照してください。
このシナリオでは、計算スクリプトを作成して式の計算を実行し、パフォーマンスを最適化します。
Essbaseでは、データベースが計算されてから、特別な計算パスを実行して2パスの式が計算されます。すべてのデータ・ブロックが最初のデータベース計算の後にクリーンとしてマークされても、Essbaseでは2パスの式に関連するブロックのクリーン・ステータスは無視され、これらのブロックは再計算されます。
初回の計算後、Essbaseでは高機能計算のためにすべてのデータ・ブロックがクリーンとしてマークされます。データベースの2回目の計算パスでは、2パスの式に必要なデータ・ブロックがEssbaseで再計算されます。ただし、2回目の計算はデータベースの部分的な計算であるため、再計算されたブロックはEssbaseでクリーンとしてマークされません。高機能計算をオンにしてデータベースを再計算すると、このようなデータ・ブロックが不必要に再計算される場合があります。
データベース構成によりEssbaseでシナリオBを使用できる場合は、2パスの式の計算に計算スクリプトを使用することを検討してください。計算スクリプトを使用すると、Essbaseではデータベースで余分な計算パスが実行されますが、計算後にすべてのデータ・ブロックがEssbaseでクリーンとしてマークされたことを確認できます。2パス計算および高機能計算用の計算スクリプトの作成を参照してください。
勘定科目メンバーを2パスとタグ付けすると、パフォーマンスが向上する場合がありますが、アプリケーションによってはこの方法は使用できません。次の制限を確認して、最高のパフォーマンスと精度を得るために、「2パス」タグを適用するべきか、計算を2回実行する計算スクリプトを作成するべきか確認してください:
メンバーは、会計次元としてタグ付けされている次元の場合は、2パスとタグ付けできます。データベースでデフォルトの計算を実行すると、データベース・アウトライン内の勘定科目としてタグ付けされた次元内にある場合は、2パスとしてタグ付けされた式がEssbaseで自動的に再計算されます。
次元のメンバーは、動的計算メンバーまたは動的計算および保管メンバーであれば、2パスとタグ付けできます。データ値の動的計算。を参照してください。
「2パス」タグでパフォーマンスが向上する場合でも、正確な結果を得るために、計算スクリプトを使用して2パスの式を計算する必要がある場合があります。2パス計算および高機能計算用の計算スクリプトの作成を参照してください。
高機能計算を効率的に使用するには、「2パス」タグではなく計算スクリプトを使用します。2パス計算と高機能計算の交差の理解を参照してください。
シナリオAで説明したように、データベース構成に応じてEssbaseでシナリオAを採用する場合や、式が別のデータ・ブロックの値を参照している場合は、計算スクリプトを使用して、式を2回計算する必要があります。
シナリオBで説明したように、データベース構成に応じてEssbaseでシナリオBを採用する場合は、計算スクリプトを使用して、2パスの式を計算した方がよい場合があります。
デフォルト設定により、デフォルト計算での2パス計算を使用可能にできます。2パス計算が使用可能になっている(デフォルト設定)データベースでデフォルト計算を実行すると、データベース・アウトライン内の勘定科目としてタグ付けされた次元にある、2パスとタグ付けされた式がEssbaseで自動的に計算されます。これは、デフォルトの計算スクリプトがカスタマイズされている場合でも同様です。
高機能計算で2パス計算を実行するための計算スクリプトを作成して、計算をできるかぎり正確かつ高速にするには、次のような方法を使用します:
2パスの式を再計算する計算スクリプト・コマンドの前に、SET UPDATECALC OFFコマンドを追加して、高機能計算を使用不可にします。高機能計算が使用可能になっている場合(デフォルト)、Essbaseではクリーンとマークされていないデータ・ブロックのみが計算されますが、高機能計算が使用可能になっているデータベースのデフォルト計算を実行すると、すべてのデータ・ブロックがクリーンとマークされるため、Essbaseで2パスの式の再計算は実行されません。
計算スクリプトを使用すると、2パスの式はEssbaseで自動的には再計算されません。CALC TWOPASSコマンドを使用してください。
CALC ALLのデフォルトの計算を変更済で、高機能計算が使用可能な場合、最初の計算後にデータ・ブロックがクリーンとしてマークされない場合があります。高機能計算についての理解。を参照してください。また、Oracle Essbase Administration Services Online Helpの「デフォルト計算の設定」も参照してください。
データベースの最初のフル計算を実行するときに、高機能計算を使用してパフォーマンスを向上させるには、計算の要件やアウトラインの構造に応じて、次のいずれかの方法を使用します:
これら3つのオプションは、次の状況を例として使用しています:
アウトラインには勘定科目としてタグ付けされた次元があり、その次元は密次元です。すべての製品の売上のパーセンテージとして、各製品の売上を計算するとします。次の式で、次元が計算されるものとします:
Sales % Sales -> Product
Essbaseで各製品のデータ・ブロックが計算されても、「Sales」->「Product」の値はまだ計算されていないため、総収入のパーセンテージとしての各製品の売上の結果は正しくありません。
大規模なインデックスで高機能計算を使用する場合は、次のいずれかのオプションを使用して、最適なパフォーマンスを得ることができます。これら3つのオプションはすべて、同じタスクを実行します。
高機能計算が使用可能な状態でデータベースのフル計算を実行する計算スクリプトを作成するには、このモデルを使用します:
SET UPDATECALC ON; CALC ALL; SET UPDATECALC OFF; SET CLEARUPDATESTATUS AFTER; "Share of Sales" = Sales % Sales -> Product;
クライアントからデフォルト計算を実行し、次に計算スクリプトを使用して式の計算を実行するには:
表189にリストされているツールのいずれかを使用して、フル計算を実行します。
この例のような計算スクリプトを使用して、高機能計算を使用不可にし、式の計算を実行します:
SET UPDATECALC OFF; SET CLEARUPDATESTATUS AFTER; "Share of Sales" = Sales % Sales -> Product;
SET UPDATECALC OFF; SET CLEARUPDATESTATUS AFTER; CALC TWOPASS;
高機能計算についての理解、ブロック・ストレージ・データベース用の式の作成、およびブロック・ストレージ・データベース用の計算スクリプトの作成。を参照してください。
データベースを計算する計算スクリプトを作成します。ただし、計算済のデータ・ブロックが、Essbaseでクリーンとしてマークされないように設定します。
すべてのデータ・ブロックをクリーンとしてマークし、データ・ブロックの再計算は行いません。
SET CLEARUPDATESTATUS OFF; CALC ALL; CALC TWOPASS; SET CLEARUPDATESTATUS ONLY; CALC ALL;
SET CLEARUPDATESTATUS OFFコマンドにより、計算済のデータ・ブロックはEssbaseでクリーンとしてマークされなくなります。
最初のCALC ALLコマンドにより、Essbaseでデータベースが循環されて、すべてのダーティ・データ・ブロックが計算されます。Essbaseでは、計算済データ・ブロックがクリーンとしてマークされません。データベース・アウトラインで2パスとしてタグ付けされた式は、Essbaseで自動的には再計算されません。
CALC TWOPASSコマンドにより、Essbaseでデータベースが循環されて、データベース・アウトライン内の勘定科目のタグの付いた次元にある、2パスとタグ付けされた式が再計算されます。必要なデータ・ブロックが、前のCALC ALLでクリーンとしてマークされていないので、Essbaseで式が再計算されます。再計算済のデータ・ブロックはEssbaseでクリーンとしてマークされません。
SET CLEARUPDATESTATUS ONLYコマンドで、Essbaseでデータ・ブロックをクリーンとしてマークしても、そのデータ・ブロックを計算しないよう設定します。このコマンドにより、計算が使用不可になります。
最後のCALC ALLコマンドにより、Essbaseでデータベースが循環され、すべてのデータ・ブロックがクリーンとしてマークされます。Essbaseでインデックスが検索され、データ・ブロックはクリーンとしてマークされます。データ・ブロックは計算されません。
「動的計算」または「動的計算および保管」タグが付いたメンバーを参照するクエリーや計算は、そのメンバーに次のいずれかの関数を含む式がある場合、同じメンバーに関するクエリーや計算よりも、かかる時間が大幅に長くなる可能性があります:
パフォーマンス速度が遅い場合は、「動的計算」タグを削除するか、式からこれらの関数を削除するか、いずれかを考慮してください。
次元メンバーの組合せに対する値が存在しない場合は、Essbaseでは#MISSINGという組合せの値が設定されます。Essbaseでは、#MISSING値とゼロ(0)値の扱いは異なります。
表190は、Essbaseで#MISSING値がどのように計算されるかを示しています。この表で、Xは任意の数を表しています:
表 190. Essbaseでの#MISSING値の処理方法
X + #MISSING |
X |
X – #MISSING #MISSING – X |
X -X |
X * #MISSING |
#MISSING |
X / #MISSING #MISSING / X X / 0 |
#MISSING #MISSING #MISSING |
X % #MISSING #MISSING % X X % 0 |
#MISSING #MISSING #MISSING |
X == #MISSING |
Xが#MISSINGでないかぎりFALSE |
X != #MISSING X < > #MISSING |
Xが#MISSINGでないかぎりTRUE Xが#MISSINGでないかぎりTRUE |
X <= #MISSING |
(X <= 0) |
X >= #MISSING |
(X >= 0)または(X == #MISSING) |
X > #MISSING |
(X > 0) |
X < #MISSING |
(X < 0) |
X AND #MISSING: Y AND #MISSING、Yは0以外の値を示します 0 AND #MISSING #MISSING AND #MISSING |
#MISSING 0 #MISSING |
X OR #MISSING: Y OR #MISSING、Yは0以外の値を示します 0 OR #MISSING #MISSING OR #MISSING |
Y #MISSING #MISSING |
IF (#MISSING) |
IF (0) |
f (#MISSING) |
1つの変数を持つ任意のEssbase関数に対して#MISSINGが戻されます |
f (X) |
fドメインでない任意のX、および(具体的に記載された場合を除き)複数の変数を持つ任意のEssbase関数に対して#MISSINGが戻されます |
デフォルトでは、#MISSING値はEssbaseによってロール・アップされません。ただし、常にレベル0でデータをロードし、親レベルでロードすることがない場合は、#MISSING値の集計の設定を使用可能にする必要があります。この設定により、計算パフォーマンスが1%-30%改善されます。パフォーマンスの改善度は、データベースのサイズと構成によって異なります。
集計を行うには、前述のいずれかの方法を使用して、#MISSING値の集計の設定を使用可能にします。達成できるパフォーマンスの改善度は、データベースの上位レベルのブロックと入力ブロックとの比率によって異なります。
Essbaseでの#MISSING値の集計方法を変更するには、次のツールを使用します:
#MISSING値の集計の設定を使用可能にする場合は、データ・ブロック内のセルの計算順序が変更されます。セルの計算順序を参照してください。 |
#MISSING値の集計の設定が使用不可にされると、次の状況では、パフォーマンスのオーバーヘッドが特に高くなる点に注意してください:
このような状況では、パフォーマンスのオーバーヘッドは10%-30%です。計算パフォーマンスが重大な意味を持つ場合は、データベース構成またはデータ・ロード方法を再検討することをお薦めします。
Essbaseでの#MISSING値の集計方法の詳細は、#MISSING値の集計を参照してください。
CLEARDATAコマンドを使用して、ブロック内のセルの値を#MISSINGに変更できます。データ・ブロックは削除されません。これらの余分なブロックにより、取得と計算のパフォーマンスが低下する場合があります。
#MISSINGのブロックによってパフォーマンス速度が低下している場合は、次のいずれかのアクションを実行します:
注: | データ値がすでにロードされている場合は、空のブロックを削除するとパフォーマンスが向上します。ただし、新しい値によりそのブロックの作成が必要になる場合は、データ・ロードの処理時間が長くなります。 |
計算とパフォーマンスの関係については、次の各章でも説明しています:
データ値の動的計算、の次の項目を参照してください:
ブロック・ストレージ・データベース用の計算スクリプトの作成、の次のトピックを参照してください:
パス計算とSET CLEARUPDATESTATUSコマンドの関係については、『Oracle Essbaseテクニカル・リファレンス』を参照してください。
CCONVコマンドを使用して通貨を換算すると、換算後のデータ・ブロックは、高機能計算のためにダーティとしてマークされます。つまり、データベースの再計算時に、換算済のブロックがすべてEssbaseで再計算されます。高機能計算についての理解。を参照してください。