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
からハードコードされた値を選択するすべての初期化ブロックを無効にして、対応する変数のデフォルト・イニシャライザにハードコードされた値を配置します。select
文にマージします。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を実行して、単一の問合せで同じ接続プールからすべての変数を取得できます。
この場合、実装やメンテナンスは簡単ではなく、問合せを作成してすべての変数を単一の初期化ブロックに割り当てるときに間違いが発生するリスクがあります。
初期化ブロックの問合せと変数を慎重に実装およびメンテナンスすれば、サインインして最初のダッシュボード・ページを表示するのにかかる時間を大幅に短縮できます。