モーグルとカバとパウダーの日記

モーグルやカバ(EXカービング)山スキー(BC)などがメインの日記でした。今は仕事のコンピュータ系のネタが主になっています。以前はスパム対策関連が多かったのですが最近はディープラーニング関連が多めです。

MySQL5.1.73でのslow-query出力方法

CentOS6.4ではMySQL5.1.73が標準で入っているのですが、そこのslow_queryがなかなか出力できずちょっとはまったのでメモ。


結論から書くと、下記のようにmy.cnfを設定すると、0.1秒以上掛かったクエリが/var/lib/mysql/mysql-slow.logに出力されます。


/etc/my.cnf

[mysqld]
log_slow_queries=1
slow_query_log=1
log_output=FILE
slow_query_log_file=mysql-slow.log
long-query-time=0.1


ぐぐっていくつかのページを参考にしたところ、5.1以降では「slow_query_log」「slow_query_log_file」の指定が必要との記述が必要と書いているところがほとんどで「log_slow_queries」の設定が必要と書いているところはあまりなかったのですが、少なくとも5.1.73では必要でした。

MySQLのマニュアルには下記のように書いてあり、5.1.12以降だと必要なような、必要でないような、よくわからん感じでしたが、必要なようです。


MySQL :: MySQL 5.1 リファレンスマニュアル :: 4.10.5 スロー クエリ ログ http://dev.mysql.com/doc/refman/5.1/ja/slow-query-log.html

MySQL 5.1.12 以降、--log-slow-queries を指定する場合、--slow-query-log オプションで最初のスロー クエリ ログ状態を指定することも可能です。このオプションで、引数なし、または 値を 0 にすると、ログが無効化します。省略する、または値を 1 とすると、ログが有効化します。--log--slow-queries を指定しない場合、--slow-query-log には何の影響もありません。


そもそもmy.cnfに記述したパラメータが効いているのかどうかがわからずに困ったのですが、下記ページを参考にshow variablesで確認して「slow_query_log」が「ON」になっているかを確認する、というのがとてもためになりました。


Mysql slow queryの設定と解析方法 2012-07-04 - masayuki14 note
http://d.hatena.ne.jp/masayuki14/20120704#1341360260