本文へスキップ

スロークエリ

スロークエリ画面では、DBパラメータで設定された基準時間を超えた遅いSQLを監視・確認できます。PostgreSQLはスロークエリをログファイルに記録しますが、確認するにはDBサーバーにターミナルで接続してテキストログを直接読み取る必要があります。スロークエリログをリアルタイムで収集し、視覚的なチャートとリストで提供します。

  • Slow Queryチャートで、遅いクエリの発生時点と実行時間を視覚的に把握できます。

  • Slow Query Listで、個別クエリの詳細情報を確認し、実行計画(Plan)を照会できます。

  • リアルタイム(Live)モードと過去時間照会の両方に対応しています。

ノート

スロークエリ収集には追加エージェントが必要です。オンプレミス環境ではXOSエージェント、クラウド(AWS RDSなど)環境ではDBXCエージェントをインストールしてください。

Tips

スロークエリチャートはダッシュボードのSQL Elapse Mapチャートと類似していますが、以下の違いがあります。

表 | スロークエリチャートと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()の実行が必要です。

postgresql.conf
log_min_duration_statement = 500
パラメータ説明
log_min_duration_statement設定値(ミリ秒)を超えるSQLをログに記録します。例:500の場合、500ms以上かかるSQLが記録されます。

DBXエージェント設定

whatap.confに以下の設定を追加します。

whatap.conf
slow_query_log=ON
設定項目タイプデフォルト値説明
slow_query_logStringOFFスロークエリログ収集の有効化

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. 遅いクエリのリアルタイムモニタリング

  1. LiveモードでSlow Queryチャートを観察

  2. 新しい点が現れたら、該当領域をドラッグして選択

  3. Slow Query ListでクエリをSQLをクリックして詳細情報と実行計画を照会

シナリオ2. 特定時間帯のスロークエリ分析

  1. 時間フィルターで問題が発生した時間帯を選択

  2. チャートでクエリが集中している区間をドラッグ

  3. Durationが長いクエリから確認して原因分析

シナリオ3. スロークエリ基準の調整

  1. スロークエリが多く収集される場合、log_min_duration_statementの値を上げて基準を緩和

  2. スロークエリが収集されない場合、log_min_duration_statementの値を下げるか、slow_query_log=ON設定を確認

AIで分析する

画面でWhaTap AIボタンをクリックすると、WhaTap AIチャットウィンドウが開き、照会した画面データを要約して分析した結果が対話形式で表示されます。結果を読んだ後、同じ対話で続けて質問できます。

  • 分析に使用するデータは散布図で選択した項目のうち、所要時間が長い上位20件です。

  • 分析対象は画面に照会されたデータです。照会条件を変更してから再度分析すると、変更後のデータを基準に分析します。

  • 対話履歴には AI分析 - {画面名} 形式で記録されます。