MySQL で遅いクエリのログを出力する方法です。
設定
# /etc/my.cnf [mysqld] slow_query_log=ON slow_query_log_file=/var/log/mysql/slow_query.log # ログの場所 long_query_time=0 # 0秒以上かかるクエリを対象にする(0だとすべてのクエリが出力される) log-queries-not-using-indexes # インデックスを使ってないクエリを出力する
設定を反映させる
$ sudo service mysqld restart
ログファイルを作成して権限を付与する
$ sudo mkdir -p /var/log/mysql/ $ sudo touch /var/log/mysql/slow_query.log $ sudo chown mysql:mysql /var/log/mysql/slow_query.log
設定されているか確認する
$ mysql -u root -p mysql> SHOW VARIABLES LIKE 'slow%'; +---------------------+-------------------------------+ | Variable_name | Value | +---------------------+-------------------------------+ | slow_launch_time | 2 | | slow_query_log | ON | | slow_query_log_file | /var/log/mysql/slow_query.log | +---------------------+-------------------------------+ mysql> SHOW VARIABLES LIKE 'long%'; +-----------------+----------+ | Variable_name | Value | +-----------------+----------+ | long_query_time | 0.000000 | +-----------------+----------+
出力されたログを集計して確認する
$ mysqldumpslow -s t /var/log/mysql/slow_query.log