【MySQL】スロークエリーログの確認ポイント
問題
slow log はどこをどう見たらよいですか。
答え
slow_query_log=1にすると、long_query_timeで指定した秒数以上かかったSQLをログファイルに残してくれる。
ログは以下のような内容。
# Time: 190323 12:26:46 # User@Host: hogeuser[hogeuser] @ [192.168.0.123] # Query_time: 5.706676 Lock_time: 0.000251 Rows_sent: 30 Rows_examined: 606019 SET timestamp=1584934006; (以下実行されたSQL)
確認すべき項目は以下の通り。
- Query_time = クエリの処理にかかった時間
- Lock_time = ロックされた時間
- Rows_sent = クエリにヒットしたレコード数
- Rows_examined = 探索対象となったレコード数
Rows_examined が極端に多い場合要注意。
遅いのはインデックスがないことがよくあるので、slow.logにSQLが残る場合は、インデックスの使用状況も確認するとよい。
# 行参照についてインデックスを使用しないクエリーをスロークエリログに含める
log_queries_not_using_indexes=1
コメント