はじめに
Oracle Analytics Cloud:利用状況を把握する ~準備編~という記事で、Oracle Analytics Cloud(OAC)のUsage Trackingの設定方法を紹介しました。
こちらの記事では、収集したログの活用を目指してみたいと思います。
Usage Tracking表(論理SQLログ)の列の説明(抜粋)
- START_TS
- 論理問合せが送信された日時を示します。
- END_TS
- 論理問合せの完了日時を示します。ユーザが問合せを終了する前にそのページから移動した場合、最終フェッチは発生せず、タイムアウト値(3600)が記録されます。 ただし、ユーザがタイムアウト前にそのページに戻ると、フェッチはその時点で完了し、end_ts時間として記録されます。
- TOTAL_TIME_SEC (Responce Time)
- クエリの開始からPresentationサーバによるデータのフェッチの開始までの時間です。Elapced Time(START_TSからEND_TSまでの所要時間)とResponce Timeに相違がある場合、それは通常、全行のフェッチに必要な時間によるものです。検索結果は全行のフェッチを待たずに描画されることがあります。
- COMPILE_TIME_SEC
- BIサーバがデータをコンパイルして送信する時間です。
- CUM_DB_TIME_SEC
- バックエンド物理データベースを待機した合計時間(秒単位)です。物理クエリが複数に分割された場合は、その合計待機時間です。
ドキュメント:使用状況トラッキング表の理解
一般的な指針および傾向
DBサーバに負荷をかけているクエリを見つける
- CUM_DB_TIME_SECの値が大きいクエリ
- TOTAL_TIME_SECとCUM_DB_TIME_SECの値が近いクエリ
- ほとんどの時間がバックエンドのDBを待機した時間
BIサーバに負荷をかけているクエリを見つける
- COMPILE_TIME_SECの値が大きなクエリ
- 「コンパイルに時間がかかっている=複雑な論理SQL」である可能性が高い
- クエリを複数に分割したり、表現方法を単純化することで負荷軽減の可能性がある
OACでUsage Tracking表を検索
今回、データはAutonomous Data Warehouse(ADW)に保管されるように設定してあります。
ADWへの接続定義を設定する方法は、こちらを参考にしてください。
Oracle Analytics Cloud:はじめてのビジュアライゼーション
LOGCALQUERIES表をドラッグ&ドロップで選択し、データセットとして保存します。
保存したデータセットを使用してワークブックを新規に作成します。
コントロールキーを押しながら、「START_DT」「TOTAL_TIME_SEC」「COMPILE_TIME_SEC」「CUM_DB_TIME_SEC」「SAW_SRC_PATH」の5つを選択します。
そのままの状態で右クリックし、「ビジュアライゼーションの選択」をクリックします。
「表」をクリックします。
COMPILE_TIME_SECで降順にソートします。
QUERY_SRC_CDで「Report」のみにフィルタすると、アンサーレポートのログのみを表示できます。
問題のあるクエリの候補を探す
上の2つのクエリ(アンサーレポート)は、いずれもCOMPILE_TIME_SECとTOTAL_TIME_SECが同じ数値で、CUM_DB_TIME_SECは小さくなっています(秒単位なので0秒と表示されています)。
これは、バックエンドのDBにクエリを発行する前に時間がかかっていることを示しており、DB側は瞬時に結果を返していることがわかります。
COMPILE_TIME_SECの数値が大きなアンサーレポート
1番上のアンサーレポートを開いてみます。
FORECAST関数を使用した6期間先までの予測を含んだグラフでした。
非表示のビューや除外されている列があれば、削除してみましょう。
CUM_DB_TIME_SECの数値が大きなアンサーレポート
3番めのアンサーレポートを見てみると、CUM_DB_TIME_SECつまりDBでの処理時間の合計が11秒であることがわかります。
一方、TOTAL_TIME_SECは2秒です。
これは、このアンサーレポートの実行時に物理的なSQLが複数に分割され、それぞれの物理SQLの合計が11秒であったことがわかります。
このアンサーレポートを開いてみます。
選択ステップと階層列を使用したレポートでした。
物理SQLの確認
選択ステップと階層列を使用したレポートが、バックエンドのDBにどのような物理SQLを発行しているのかを確認したいと思います。
データセットの拡張
「データ」に移動し、データセットの編集アイコンをクリックします。
データセット編集用にブラウザの新しいタブが開きます。
「結合ダイアグラム」タブに移動します。
「自動結合表」をオフにして、「PHYSICALQUERIES」表をドラッグ&ドロップします。
取り込んだ「PHYSICALQUERIES」表を「LOGICALQUERIES」表の上にドラッグ&ドロップします。
結合条件を設定するために、2つの表を間のアイコンをクリックします。
LOGICALQUERIES表の ID 列とPHYSICALQUERIES表の LOGICAL_QUERY_ID 列で結合します。
データセットを保存します。
ワークブックのタブに戻り、「ビジュアル化」に移動します。
物理SQLの確認
物理SQLを確認するアンサーレポートを右クリックし、メニューから「選択項目の保持」をクリックします。
PHYSICALQUERIESを展開し、「QUERY_TEXT」をドラッグ&ドロップで表に含めます。
分割実行された物理SQLを確認することができました。
ダッシュボードを作ってみる
こちらの記事も参考にしてみてください。