スロークエリ
スロークエリ画面では、DBパラメータで設定された基準時間を超えた遅いSQLを監視・確認できます。MySQLはスロークエリをログファイルまたはテーブルに記録しますが、確認するにはDBサーバーにターミナルで接続してテキストログを直接読み取るか、mysql.slow_logテーブルを照会する必 要があります。この画面では、スロークエリログをリアルタイムで収集し、視覚的なチャートとリストで提供します。
-
Slow Queryチャートで、遅いクエリの発生時点と実行時間を視覚的に把握できます。
-
Slow Query Listで、個別クエリの詳細情報を確認し、実行計画(Plan)を照会できます。
-
リアルタイム(Live)モードと過去時間照会の両方に対応しています。
スロークエリ収集には追加エージェントが必要です。オンプレミス環境ではXOSエージェント、クラウド(AWS RDSなど)環境ではDBXCエージェントをインストールしてください。
スロークエリチャートはダッシュボードの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_log | Boolean | ON | スロークエリログ収集の有効化 |
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: 遅いクエリのリアルタイムモニタリング
-
LiveモードでSlow Queryチャートを観察
-
新しい点が現れたら、該当領域をドラッグして選択
-
Slow Query ListでクエリをSQLをクリックして詳細情報と実行計画を照会
シナリオ2: 特定時間帯のスロークエリ分析
-
時間フィルターで問題が発生した時間帯を選択
-
チャートでクエリが集中している区間をドラッグ
-
Query Timeが長いクエリから確認して原因分析
シナリオ3: スロークエリ基準の調整
-
スロークエリが多く収集される場合、
long_query_time