Top SQL
照会期間中のTop SQLリストを提供します。エージェントが収集したアクティブセッション内のSQLに基づいて、実行回数、実行時間、待ち時間などの指標をWhaTapが独自に算出したSQL統計です。
- 最小1分〜最大30日の範囲で照会でき、長期分析に適しています。
- 推移チャートを通じて、特定の時間帯のSQL発生パターンを視覚的に把握できます。
- リテラル値を除いたSQLを基準に統計を算出します。
- DBXエージェント2.4.5バージョン以上が必要です。
SQL統計(DB)との違い
| 区分 | Top SQL | SQL統計(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_interval | int | 5 | SQL統計データを生成・送信する周期(分)。1または5に設定可能。 |
TOP SQL分析
Top SQL画面は分析基準タブとソート順を選択して、SQLパフォーマンスをさまざまな視点から分析できるように構成されています。ユーザーはアプリケーション視点のグループ分析から個別SQLパフォーマンス分析までdrill-down/drill-up方式で段階的に探索できます。
Top SQL分析は以下の順序で進めます。
-
分析基準タブで分析基準を選択してください。
- 分析基準タイプ:ALL、DB、USER、HOST
-
ソート順でTop選定指標を選択してください。
- Top選定指標タイプ:Elapsed Time、Avg Elapsed Timeなど
-
チャートで負荷が高いグループを識別してください。
-
特定のグループを選択し、SQL Listで個別Top SQLを確認してください。
-
追加分析が必要な場合は、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が実行された時間帯のインスタンス全体とアクティブセッションを一度に確認できます。
データ解釈ガイド
主な指標
| カラム | 意味 | 解釈ポイント |
|---|---|---|
sql | SQL文(リテラル値除く) | どのクエリかを確認 |
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 maxとelapse avgの差が大きいSQL普段は速いが特定の条件で急激に遅くなる → ロック競合、データ偏りなどを確認
実践活用シナリオ
シナリオ1. 全体負荷が大きいSQLを探す
-
elapse sum (sec)基準で降順ソート -
上位SQLがDB全体の負荷に最も大きな影響を与えるクエリ
-
execute countとelapse avgを合わせて確認し判断-
elapse avgが高い場合: 個別クエリ自体が遅い → SQLチューニング、インデックス確認
-
elapse avgは低いがexecute countが高い場合: 頻繁に呼び出されすぎ → キャッシュ、呼び出しロジックの改善
-
シナリオ2. 遅いSQLを探す
-
elapse avg (sec)基準で降順ソート -
個別実行が遅いSQLを識別
-
該当SQLのPlan(実行計画)を確認してチューニングポイントを決定