Essbaseでのトランザクション・セマンティクスの理解

キューブが読取り/書込みモードの場合、Essbaseは、サーバーに対するすべての更新リクエスト(データ・ロード、計算、計算スクリプトの文など)をトランザクションとみなします。

各トランザクションには現在の状態(アクティブ、コミット済または中止)があります。データがコミットされると、サーバーのメモリーから取得されてディスク上のキューブに書き込まれます。

キューブ・インスペクタ設定の「トランザクション」タブにある「ブロックのコミット」/「行のコミット」オプションは、Essbaseがデータのブロックまたは行をコミットする頻度を示します。

Essbaseは、トランザクションがブロック単位で読取り/書込みロックを保持できるようにします。Essbaseは、ブロックが更新されると解放しますが、トランザクションが完了するか、設定された制限(“同期ポイント”)に達するまで、ブロックをコミットしません。

Essbaseが明示的なコミット操作を実行するタイミングを制御するには、次の同期ポイント・パラメータを指定します:


Essbase Webインタフェースのキューブ・インスペクタ→「設定」→「トランザクション」タブにあるアンコミット・アクセス・オプションのイメージ。

  • ブロックのコミット(同期ポイントが発生するまでに変更されるブロックの数)。Essbaseは、指定されたブロック数に達すると、コミットします。この頻度は、計算中に動的に調整される場合があります。

    「ブロックのコミット」を0に設定すると、同期ポイントはトランザクションの最後に発生します。

  • 行のコミット(同期ポイントが発生するまでにロードが行われる行の数)。デフォルトは0です。つまり、同期ポイントはデータ・ロードの最後に発生します。

「ブロックのコミット」と「行のコミット」のいずれかにゼロ以外の値が指定されている場合、同期ポイントは最初のしきい値に達すると発生します。たとえば、「ブロックのコミット」が10だが「行のコミット」が0の場合にデータをロードすると、同期ポイントは、10個のブロックが更新された後に発生します。「ブロックのコミット」が5で「行のコミット」が5の場合にデータをロードすると、同期ポイントは、5個の行がロードされた後か、5個のブロックが更新された後(いずれか早い方)に発生します。

EssbaseサーバーがOracle Exalytics In-Memory Machine上で実行されている場合、アンコミット・アクセス設定は適用されません。コミットはコマンドまたはリクエストの最後に発生します。「ブロックのコミット」または「行のコミット」の設定に加えた変更は無視されます。

EssbaseサーバーがWindows上の独立したデプロイメントで実行されている場合、「ブロックのコミット」はデフォルトで3000に設定されます。

操作中にユーザー定義のしきい値を超えた場合、Essbaseは同期ポイントを作成して、その時点までに処理されたデータをコミットします。Essbaseは、操作を完了するために必要な数の同期ポイントを作成します。

Essbaseは、並列計算の使用の実行可能性を分析する際に、「ブロックのコミット」と「行のコミット」の値を分析します。設定されている値が小さすぎることが判明した場合、Essbaseは自動的に値を大きくします。

Essbaseは、トランザクションのセマンティクスを適用するために重複したデータを保持します。「ブロックのコミット」と「行のコミット」の両方が0に設定されている場合は特に、データベースのサイズの2倍のディスク領域を確保して、重複したデータに対応できるようにしてください。

「ブロックのコミット」と「行のコミット」を設定するには
  1. Essbase Webインタフェース「トランザクション」に移動します。
    Redwoodインタフェースで:
    1. 「アプリケーション」ページでアプリケーションを開き、データベース(キューブ)を開きます。
    2. 「カスタマイズ」をクリックし、「設定」をクリックして、「トランザクション」をクリックします。
    クラシックWebインタフェースで:
    1. アプリケーション・ページで、アプリケーションを展開します。
    2. キューブ名の右にある「アクション」メニューから、「設定」をクリックし、「トランザクション」をクリックします。
  2. 選択を行い、「保存」をクリックします。