MySQLのslow queryの設定が上手くいかなかった時に確認すること


本記事は、この記事からかなりそのまま引用している。

slow queryの設定方法は2通り。

mysql> set global slow_query_log_file = '/tmp/mysql-slow.log';
mysql> set global long_query_time = 5;
mysql> set global slow_query_log = ON;

または、my.confからの場合は

/etc/my.conf
[mysqld]
slow_query_log=ON
long_query_time = 5
slow_query_log_file = /tmp/mysql-slow.sql

my.confからの場合は再起。

/etc/init.d/mysqld restart

上手くいかない時がある

とりあえず

もう一回再起動

再起動は成功するけどやっぱり出ない場合は、テーブルに出力してみる

mysql> set global log_output = 'TABLE';

念のため設定確認...。

mysql> show variables like 'slow%';
+---------------------+---------------------+
| Variable_name       | Value               |
+---------------------+---------------------+
| slow_launch_time    | 2                   |
| slow_query_log      | OFF                 |
| slow_query_log_file | /tmp/mysql-slow.sql |
+---------------------+---------------------+

slow_query_logがOFFになってたらONへ変更。

mysql> set global slow_query_log = ON

これで出力されるはず。

mysql> select * from mysql.slow_log;

テーブルには出せたけど、やっぱりファイルに出したい

出力先設定。

mysql> set global log_output = 'FILE';
  • この設定をしたときに権限エラーがでたら、出力先ファイルslow_query_log_fileの権限を確認して変更。

  • /etc/my.confにゴミが入ってないか確認。(自分はこれw)

  • long_query_timeを0にしてみる。

mysql> set global long_query_time = 0;