初期化ブロックのメンテナンス

Oracle Analytics Cloudでデータ・ゲートウェイまたはリモート・データ・コネクタを使用する場合、各問合せ実行の期間にわずかなオーバーヘッドが発生します。

それは0.3秒未満であるため、レポートの実行時にこの追加の期間に気付くことはありません。ただし、初期化ブロック問合せはシリアルに実行されるため、誰かがサインインするたびに多くの初期化ブロックが実行されると(その回数はパフォーマンス要件に応じて異なります)、パフォーマンスの問題が発生することがあります。このトピックでは、セッション初期化ブロックの数を減らす方法を提案します。

初期化ブロックは最初のダッシュボード・ページを開いたときに実行されるため、初期化ブロックの遅延オプションを使用してもこの問題は修正されません。

これは、Oracle BIアプリケーションを使用する場合に問題となります。それは200を超える初期化ブロックを実行するためです。Oracle Analytics Cloudでこれらのパフォーマンスの問題を避けるのに最適な方法は、初期化ブロックの数を減らすことです。

セッション初期化ブロックの数を減らすことができる次の方法をお薦めします。

  • 必要のないすべての初期化ブロックを無効にします。

    たとえば、Oracle BIアプリケーションで、もう使用することのないOracle BIアプリケーションを参照している初期化ブロックを無効にします。

  • 優先ルールがある場合を除き、問合せ間でUNION ALLを使用し、同じ接続プールを使用して同じデータ型を返すすべてのrow_wise初期化ブロックをマージします。

    例:

    Init block 1: query1
    
    Init block 2: query2
    
    Merged init block: query1 union all query2
  • dualまたはW_DUAL_Gからハードコードされた値を選択するすべての初期化ブロックを無効にして、対応する変数のデフォルト・イニシャライザにハードコードされた値を配置します。
  • dualからデータを選択する残りの初期化ブロックを単一のselect文にマージします。
  • Oracle BIアプリケーションの顧客については、Oracle Human Capital Managementのカスタム属性名と値を取得するために使用されるすべての初期化ブロックを無効にします(対応する属性が使用されていない場合、標準のデフォルト値HIDEがこれらの変数の現在の値である場合、またはOracle BIアプリケーションのデータ・ソースとしてOracle Human Capital Managementを使用しない場合(Oracle BIアプリケーションにはそのような初期化ブロックが100個あります)):
    HR xxx Attribute yyy
  • row_wiseではなく、同じ接続プールを使用する残りのすべての初期化ブロックをマージします。例:

    初期化ブロック1は問合せ1に基づきます: select colA from tableA where….

    初期化ブロック2は問合せ2に基づきます: select colB from tableB where…

    次のような問合せを使用してそれらを単一の初期化ブロックにマージできます:

    Select MAX(colA), MAX(colB) from (
    
    select cola as cola, null as colB from tableA where….
    
    Union all
    
    Select null, colB from tableB where…) tmp

    必要な数だけUNIONを実行して、単一の問合せで同じ接続プールからすべての変数を取得できます。

    この場合、実装やメンテナンスは簡単ではなく、問合せを作成してすべての変数を単一の初期化ブロックに割り当てるときに間違いが発生するリスクがあります。

初期化ブロックの問合せと変数を慎重に実装およびメンテナンスすれば、サインインして最初のダッシュボード・ページを表示するのにかかる時間を大幅に短縮できます。