スロークエリ
スロークエリ画面では、DBパラメータで設定された基準時間を超えた遅いSQLを監視・確認できます。PostgreSQLはスロークエリをログファイルに記録しますが、確認するにはDBサーバーにターミナルで接続してテキストログを直接読み取る必要があります。スロークエリログをリアルタイムで収集し、視覚的なチャートとリストで提供します。
-
Slow Queryチャートで、遅いクエリの発生時点と実行時間を視覚的に把握できます。
-
Slow Query Listで、個別クエリの詳細情報を確認し、実行計画(Plan)を照会できます。
-
リアルタイム(Live)モードと過去時間照会の両方に対応しています。
スロークエリ収集には追加エージェントが必要です。オンプレミス環境ではXOSエージェント、クラウド(AWS RDSなど)環境ではDBXCエージェントをインストールしてください。
スロークエリチャートはダッシュボードのSQL Elapse Mapチャートと類似していますが、以下の違いがあります。
| 区分 | スロークエリ | SQL Elapse Map |
|---|---|---|
| データソース | DBが記録するスロークエリログ | エージェントが5秒間隔で収集するアクティブセッション |
| 実行時間の精度 | DBが記録した実際の実行時間で正確 | 5秒間隔収集のため、最大5秒の誤差が発生する可能性あり |
| 収集対象 | 設定基準時間(log_min_duration_statement)を超えたクエリのみ | 収集時点で実行中のすべてのアクティブセッション |
事前設定
この画面にデータを表示するには、DB設定、DBXエージェント設定、環境に応じてXOSエージェントまたはDBXCエージェントの設定が必要です。
DB設定
postgresql.confでスロークエリの基準時間を設定します。変更後、PostgreSQLの再起動またはpg_reload_conf()の実行が必要です。
log_min_duration_statement = 500
| パラメータ | 説明 |
|---|---|
log_min_duration_statement | 設定値(ミリ秒)を超えるSQLをログに記録します。例:500の場合、500ms以上かかるSQLが記録されます。 |
DBXエージェント設定
whatap.confに以下の設定を追加します。
slow_query_log=ON
| 設定項目 | タイプ | デフォルト値 | 説明 |
|---|---|---|---|
slow_query_log | String | OFF | スロークエリログ収集の有効化 |
OSエージェント設定
スロークエリログを収集するには、DB運用環境に合ったエージェントが必要です。
| 環境 | 必要なエージェント | 主な設定 | 設定ガイド |
|---|---|---|---|
| オンプレミス(Linux、Windows) | XOSエージェント | なし(自動認識失敗時はslow_query=にログファイルパスを直接指定) | XOSエージェント設定 |
| クラウド(AWS RDS、NCPなど) | DBXCエージェント | slow_query: true(config.yamlのインスタンス別設定) | DBXCエージェント設定 |
スロークエリ
基本オプション
スロークエリ画面上部のフィルター領域で、照会する期間と対象DBインスタンスを選択できます。
-
時間: リアルタイム(Live)モードまたは過去の時間を選択します。Liveモードは10秒間隔で自動更新されます。
-
インスタンス: 照会対象のDBインスタンスを選択します。全体または個別インスタンスを選択できます。
Slow Queryチャート
スロークエリが発生した時点をscatterチャートで表示します。Y軸は実行時間(秒)、X軸は時間です。
- 各点は1つのスロークエリを表し、上に位置するほど時間がかかったクエリです。
- チャート領域をマウスドラッグすると、該当区間のクエリのみ下部リストに表示されます。
- 右上の**∧ / ∨**ボタンでY軸の範囲を調整できます。
Slow Query List
チャートで選択した区間に該当するスロークエリリストを表示します。
| カラム | 説明 |
|---|---|
Instance | クエリが実行されたインスタンス名 |
DB | データベース名 |
User | 実行ユーザー名 |
Log Time | スロークエリログの記録時刻 |
Type | ログタイプ(例:statement) |
Coltype | コレクションタイプ |
Duration (s) | クエリ実行時間(秒) |
SQL | 実行されたSQL文 |
SQL詳細表示
SQLカラムのクエリをクリックすると、詳細情報ウィンドウが開きます。
データ解釈ガイド
主な確認ポイント
-
Durationが長いクエリ: 個別実行時間が長いクエリ → SQLチューニング、インデックス確認
-
同一のSQLが繰り返し表示される場合: 特定のクエリが継続的に遅い → 根本的なチューニングが必要
-
特定の時間帯に集中している場合: 該当時間のDB負荷、ロック競合、バッチ処理など外部要因を確認
実践活用シナリオ
シナリオ1. 遅いクエリのリアルタイムモニタリング
-
LiveモードでSlow Queryチャートを観察
-
新しい点が現れたら、該当領域をドラッグして選択
-
Slow Query ListでクエリをSQLをクリックして詳細情報と実行計画を照会
シナリオ2. 特定時間帯のスロークエリ分析
-
時間フィルターで問題が発生した時間帯を選択
-
チャートでクエリが集中している区間をドラッグ
-
Durationが長いクエリから確認して原因分析
シナリオ3. スロークエリ基準の調整
-
スロークエリが多く収集される場合、
log_min_duration_statementの値を上げて基準を緩和 -
スロークエリが収集されない場合、
log_min_duration_statementの値を下げるか、slow_query_log=ON設定を確認
AIで分析する
画面でWhaTap AIボタンをクリックすると、WhaTap AIチャットウィンドウが開き、照会した画面データを要約して分析した結果が対話形式で表示されます。結果を読んだ後、同じ対話で続けて質問できます。
-
分析に使用するデータは散布図で選択した項目のうち、所要時間が長い上位20件です。
-
分析対象は画面に照会されたデータです。照会条件を変更してから再度分析すると、変更後のデータを基準に分析します。
-
対話履歴には
AI分析 - {画面名}形式で記録されます。