よく知らないプロジェクトに、ちょっとした変更を加えるとする。
一応、負荷的に問題がなさそうかを見るため、発行されるクエリすべてと、indexがついていないクエリを抽出したい。
my.cnfなどをいじってlogを出力してもいいが、ちょっと面倒である。
そういうとき、一時的にmysql.slow_logテーブルを利用すると便利。
毎回コマンドを忘れてしまうためメモ。
indexがついていないクエリを確認する
設定
set global long_query_time = 1; -- 秒数は任意で設定
set global log_queries_not_using_indexes = on;
set global log_output = 'TABLE';
set global slow_query_log = ON;
確認
SELECT * FROM `mysql`.`slow_log` WHERE db <> "mysql"; -- 自身が実行したクエリは除外
[おまけ]すべてのクエリを確認する
設定
set global long_query_time = 0;
set global log_output = 'TABLE';
set global slow_query_log = ON;