MySQL slow query log
2025.03.13オリジナルのシステムを開発構築する際にデータベース側はのテーブルの構成・構造、インデックス等を検討して設定するわけですが、その際にチェックする(あるいは開発後もチェックしたりする)スロークエリーについて。
MySQLではSQL処理の際に想定外に遅い処理となっているSQLについてログの出力を行えます。
この設定は通常、MySQLの設定ファイル(/etc/my.conf 等)で行い、SQLの実行に時間がかかるクエリーをログとして出力しチェックします。その設定部分です。
/etc/my.conf 設定例 抜粋
# Slow query log setting
slow_query_log = 1 # [0|1]
slow_query_log_file = /{Path to save the log file}/mysqld-slow.log
long_query_time = 0.5
log-queries-not-using-indexes = 0 # [0|1]
2行目はスロークエリーのログを出力するかどうかの設定。0は無効、1は有効です。
3行目は出力するログファイルの場所、ログファイルのパスを設定します。
4行目はどのくらい時間がかかったクエリーについて出力するかを設定します。最小値は0、デフォルト値は10で、値はマイクロ秒の精度まで指定可能です。
5行目はインデックスが使用されなかったクエリーを出力するための設定で、0は無効、1は有効です。インデックスを使用しないクエリーのログを取る場合こちらを有効にします。
5行目を有効にした場合(インデックスを使用しないクエリーのログを出力する場合)は、4行目のlong_query_timeの値は無視され、インデックスが使用されなかったクエリーはすべて出力されます。