本文へスキップ

スロークエリ

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

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

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

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

ノート

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

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

表 | スロークエリチャートとSQL Elapse Mapチャートの違い
区分スロークエリSQL Elapse Map
データソースDBが記録するスロークエリログエージェントが5秒間隔で収集するアクティブセッション
実行時間の精度DBが記録した実際の実行時間で正確5秒間隔収集のため、最大5秒の誤差が発生する可能性あり
収集対象設定基準時間(long_query_time)を超えたクエリのみ収集時点で実行中のすべてのアクティブセッション

事前設定​

この画面にデータを表示するには、DB設定、DBXエージェント設定、環境に応じてXOSエージェントまたはDBXCエージェントの設定が必要です。

DB設定​

my.cnf(またはmy.ini)でスロークエリ関連パラメータを設定します。変更後、MySQLの再起動が必要です。

slow_query_log = 1
long_query_time = 3
log_output = FILE
パラメータ説明
slow_query_logスロークエリログの有効化。1で有効になります。
long_query_time設定値(秒)を超えるSQLをログに記録します。例:3の場合、3秒以上かかるSQLが記録されます。
log_outputログの保存方式。FILEはファイルに、TABLEはmysql.slow_logテーブルに記録します。
ノート

log_output=TABLEに設定した場合、モニタリングアカウントに照会権限を付与する必要があります。ただし、TABLEモードはスロークエリの発生量が多い場合、DBパフォーマンスに影響を与える可能性があるため注意が必要です。

GRANT SELECT ON mysql.slow_log TO whatap;

DBXエージェント設定​

whatap.confのslow_query_logオプションはデフォルト値がONのため、別途設定は不要です。

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

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データベース名
Start Timeクエリ開始時刻
User実行ユーザー名
Host接続ホスト
IDスレッドID
Schemaスキーマ名
QC Hitクエリキャッシュヒットの有無
Query Time (s)クエリ実行時間(秒)
Lock Time (s)ロック待ち時間(秒)
Rows Sentクライアントに返された行数
Rows Examinedクエリ処理のために検査した行数
Rows Affected変更された行数
Bytes Sentクライアントに送信されたバイト数
SQL実行されたSQL文

SQL詳細表示​

SQLカラムのクエリをクリックすると、詳細情報ウィンドウが開きます。

データ解釈ガイド​

主な確認ポイント​

  • Query Timeが長いクエリ: 個別実行時間が長いクエリ → SQLチューニング、インデックス確認

  • Lock Timeが長いクエリ: ロック待ちが長くパフォーマンス低下 → トランザクション競合、ロック原因の確認

  • Rows Examinedが大きいクエリ: 検査行数に対して返された行数が少ない場合 → インデックス不足または非効率なスキャン

  • 同一のSQLが繰り返し表示される場合: 特定のクエリが継続的に遅い → 根本的なチューニングが必要

  • 特定の時間帯に集中している場合: 該当時間のDB負荷、ロック競合、バッチ処理など外部要因を確認

実践活用シナリオ​

シナリオ1: 遅いクエリのリアルタイムモニタリング​

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

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

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

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

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

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

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

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

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

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

AIで分析する​

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

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

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

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