slow_query_log したいときのmy.cnfの書き方。


IMGP4587



※写真と本文は関係ありません。


mysql 5.1 の my.cnf の書き方。『slow_query_log = ON』では設定が反映されない。
『slow_query_log = 1』と書く。

こんなふうに書いたら有効にならない。


[mysqld]
slow_query_log = ON
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 0.1


mysql で show variables して確認。有効じゃない!!(他の設定は反映されてるのに…)


mysql> show variables like 'slow%';
+---------------------+-------------------------+
| Variable_name       | Value                   |
+---------------------+-------------------------+
| slow_launch_time    | 2                       |
| slow_query_log      | OFF                     |
| slow_query_log_file | /var/log/mysql-slow.log |
+---------------------+-------------------------+
3 rows in set (0.00 sec)
mysql> show variables like 'long%';
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 0.100000 |
+-----------------+----------+
1 row in set (0.00 sec)


『slow_query_log = 1』と書けばOK。


[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql-slow.log
long_query_time = 0.1


でmysqldを起動するとこんな感じで、Logfile に Versionなどが書き込まれる。


# tail -f /var/log/mysql-slow.log
/usr/libexec/mysqld, Version: 5.1.56-log (MySQL Community Server (GPL) by Remi). started with:
Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument


show variables して確認。OK。


mysql> show variables like 'slow%';
+---------------------+-------------------------+
| Variable_name       | Value                   |
+---------------------+-------------------------+
| slow_launch_time    | 2                       |
| slow_query_log      | ON                      |
| slow_query_log_file | /var/log/mysql-slow.log |
+---------------------+-------------------------+
3 rows in set (0.01 sec)


集計するには『mysqldumpslow』コマンド(実行時間が長い順にソート)
mysqldumpslow -s at /var/log/mysql-slow.log


ウノウラボ by Zynga Japan: MySQLのチューニングのためのデータの集め方


〜mysql 5.0 だとオプションが違う。


long_query_time=1
log-slow-queries=/var/log/mysql/slow.log


touch /var/log/mysql/slow.log
chmod 664 /var/log/mysql/slow.log
chown mysql:mysql /var/log/mysql/slow.log

/var/log/mysql/slow.log のパーミッション注意。

log-queries-not-using-indexes オプションも有効にするといいかも。