本文へスキップ

Top SQL

照会期間中のTop SQLリストを提供します。エージェントが収集したアクティブセッション内のSQLに基づいて、実行回数、実行時間、待ち時間などの指標をWhaTapが独自に算出したSQL統計です。

  • 最小1分〜最大30日の範囲で照会でき、長期分析に適しています。
  • 推移チャートを通じて、特定の時間帯のSQL発生パターンを視覚的に把握できます。
  • リテラル値を除いたSQLを基準に統計を算出します。
  • DBXエージェント2.4.5バージョン以上が必要です。
Tips

SQL統計(DB)との違い

区分Top SQLSQL統計(DB)
データソースエージェントが収集したアクティブセッションDBのperformance_schemaビュー
統計算出WhaTap独自算出DBが提供する統計をそのまま収集
別途DB設定不要performance_schemaの有効化および権限付与が必要
主な指標実行回数、実行時間(avg/max/sum)実行回数、実行時間、Row処理、インデックス効率、一時テーブル、ソートなど
照会範囲1分〜30日時間/日単位
推移チャート提供非提供

事前設定

Top SQL分析機能を使用するにはエージェント設定が必要です。

エージェント設定

別途設定なしで5分単位の統計がデフォルトで提供されます。より精密な1分単位の分析が必要な場合、whatap.confに以下の設定を追加します。

sqlstat_send_interval=1
設定項目タイプデフォルト値説明
sqlstat_send_intervalint5SQL統計データを生成・送信する周期(分)。1または5に設定可能。

TOP SQL分析

Top SQL画面は分析基準タブソート順を選択して、SQLパフォーマンスをさまざまな視点から分析できるように構成されています。ユーザーはアプリケーション視点のグループ分析から個別SQLパフォーマンス分析までdrill-down/drill-up方式で段階的に探索できます。

Top SQL分析は以下の順序で進めます。

  1. 分析基準タブで分析基準を選択してください。

    • 分析基準タイプ:ALL、DB、USER、HOST
  2. ソート順でTop選定指標を選択してください。

    • Top選定指標タイプ:Elapsed Time、Avg Elapsed Timeなど
  3. チャートで負荷が高いグループを識別してください。

  4. 特定のグループを選択し、SQL Listで個別Top SQLを確認してください。

  5. 追加分析が必要な場合は、SQL詳細分析画面に移動して分析してください。

基本オプション

上部フィルター領域で時間、対象インスタンス、フィルターなどを設定できます。

  • 時間: 照会時間範囲を選択(1分〜30日)

  • インスタンス: 照会対象DBインスタンスを選択

  • フィルター: フィールド別条件検索(デフォルト:SQL Textから'WhaTap'を除外)

  • ソート順: Top SQLを選定する基準指標(Elapsed Time、Avg Elapsed Time、Max Elapsed Time、Execute Count)を選択。選択した指標を基準に降順ソート

  • 照会件数: テーブルに表示する件数を設定

  • Top N: 推移チャートに表示する上位項目数を設定

  • カラム選択: 表示するカラムを追加/削除し、ドラッグで順序変更可能

  • ダウンロード: CSV形式でエクスポート

フィールドパネル

画面左側のフィールドパネルでフィルター条件を簡単に追加できます。フィールド名をクリックして条件を入力すると、その条件がフィルターに追加されます。

フィールドタイプ説明
SQL Text文字SQL文
Elapsed Time数値実行時間合計(秒)
Avg Elapsed Time数値平均実行時間(秒)
Max Elapsed Time数値最大実行時間(秒)
Execute Count数値実行回数
SQL Hash Value文字SQLハッシュ値
User文字実行ユーザー

分析基準タブ

分析基準タブでは、Top SQLをどの基準で分析するかを選択します。ALL、DB、USER、HOSTなどさまざまな分析基準を提供し、選択した基準に応じてSQL実行情報をグループ単位またはSQL単位で分析できます。

ALL

ALLを選択するとSQL単位のTop SQLをすぐに確認できます。チャートもSQL単位の基準で表示され、システム全体でパフォーマンス影響度が高いSQLを直接確認する際に使用します。

DB/USER/HOST

DB/USER/HOSTはアプリケーション視点でよく使用する分析基準です。このタブを選択すると、該当基準でSQL実行指標が集計されてチャートに表示されます。

タブ説明
DBデータベース単位でSQL実行負荷を分析
USERユーザーアカウント基準でSQL負荷を分析
HOSTホスト基準でSQL負荷を分析

チャートで特定のグループを選択すると、下部にそのグループに属するSQLリスト(SQL List)が表示されます。これによりグループ→SQL段階でdrill-downして個別Top SQLまで詳細分析できます。

推移チャート

選択した指標タブ基準でTop N個のSQLの推移を時系列チャートで表示します。どのSQLが該当指標値が高いか、どの時間帯に高いかを一目で確認できます。チャート下部の凡例で各SQLを確認でき、凡例またはチャートをクリックすると該当SQLラインがハイライトされます。

照会時間範囲に応じてチャートのデータ間隔が自動調整されます。

照会範囲チャートインターバル
3時間以下1分または5分(sqlstat_send_interval値により決定)
1日以下5分
30日以下1時間

クエリ別チャート

テーブル項目の**►ボタンをクリックすると、該当個別クエリの実行回数平均実行時間**チャートを確認できます。チャートインターバルは上記基準と同じです。

  • マウスをオーバーすると時間別の数値を確認できます。

  • チャートの棒グラフをクリックすると、該当時間のインスタンスモニタリング画面が新しいウィンドウで開きます。該当SQLが実行された時間帯のインスタンス全体とアクティブセッションを一度に確認できます。

データ解釈ガイド

主な指標

カラム意味解釈ポイント
sqlSQL文(リテラル値除く)どのクエリかを確認
instance実行されたインスタンス名どのDBで実行されたかを確認
execute count実行回数高いほど頻繁に呼び出されるSQL → 最適化効果が大きい
elapse sum (sec)総累積実行時間(秒)高いほど全体負荷が大きいSQL
elapse avg (sec)平均実行��間(秒)= elapse sum / execute count高いほど個別実行が遅いSQL → チューニング優先対象
elapse max (sec)最大実行時間(秒)断続的なパフォーマンス低下の検出 → 最悪ケースの把握

チューニング対象SQLの識別

  • elapse sumが高くexecute countも高いSQL

    頻繁に実行されながら全体負荷が大きい → 最優先チューニング対象

  • elapse avgが高いSQL

    個別クエリ自体が遅い → SQLチューニング、インデックス確認

  • elapse avgは低いがexecute countが高いSQL

    個別は速いが頻繁に呼び出されすぎ → キャッシュ、呼び出しロジックの改善

  • elapse maxelapse avgの差が大きいSQL

    普段は速いが特定の条件で急激に遅くなる → ロック競合、データ偏りなどを確認

実践活用シナリオ

シナリオ1. 全体負荷が大きいSQLを探す

  1. elapse sum (sec)基準で降順ソート

  2. 上位SQLがDB全体の負荷に最も大きな影響を与えるクエリ

  3. execute countelapse avgを合わせて確認し判断

    • elapse avgが高い場合: 個別クエリ自体が遅い → SQLチューニング、インデックス確認

    • elapse avgは低いがexecute countが高い場合: 頻繁に呼び出されすぎ → キャッシュ、呼び出しロジックの改善

シナリオ2. 遅いSQLを探す

  1. elapse avg (sec)基準で降順ソート

  2. 個別実行が遅いSQLを識別

  3. 該当SQLのPlan(実行計画)を確認してチューニングポイントを決定

シナリオ3. 断続的なパフォーマンス低下の検出

  1. elapse max (sec)elapse avg (sec)の差が大きいSQLを確認 → 普段は速いが特定の条件で急激に遅くなるSQL

  2. ►ボタンでクエリ別推移チャートを開き遅くなった時間帯を確認

  3. 該当時間帯の棒グラフをクリックしてインスタンスモニタリングで原因分析

シナリオ4. 特定時間帯の異常分析

  1. 推移チャートで異常に高い区間を確認

  2. 該当時間帯をクリックしてインスタンスモニタリング指標を確認

  3. どのSQLが該当時間帯に集中的に実行されたかを分析

追加機能

SQL詳細情報の確認と条件ベースのフィルター設定ができます。

SQL詳細表示

SQLカラムをクリックすると詳細情報ウィンドウが開きます。SQL詳細ウィンドウの説明は以下を参照してください。

フィルターの使い方

  1. フィルター追加ボタンをクリックしてください。

  2. フィルターキーを選択してください。

    • 文字(String): =(含む)、!=(含まない)

    • 数値(Number): ==(等しい)、>=(以上)、<=(以下)

  3. 値を入力した後、適用してください。

  4. 複数条件はANDロジックを適用してください。