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 オプションも有効にするといいかも。