MySQL
MySQL5.0 [#ufcc7939]
# vi /etc/my.cnf
[mysqld]
log-slow-queries = /var/log/mysql_slow.log
long_query_time = 1
log-queries-not-using-indexes
|変数名|説明| |log-slow-queries| ログ出力先ファイル名(絶対パス/想定パス指定可)| |long_query_time| 指定した時間(sec)以上かかったクエリを記録(デフォルト10秒)| |log-queries-not-using-indexes |指定するとインデックスを使用しないクエリも記録する|
参考URL:http://yonchu.hatenablog.com/entry/20100716/1279301089
MySQL5.5以上 [#z469bf7a]
設定の確認 [#h21c5b54]
mysql> show variables like 'slow%';
+---------------------+----------------+
| Variable_name | Value |
+---------------------+----------------+
| slow_launch_time | 2 |
| slow_query_log | OFF |
| slow_query_log_file | mysql-slow.log |
+---------------------+----------------+
slow_query_log がOFFになっているとスロークエリの出力は行われません。
mysql> show variables like 'long%';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
slow_query_logがONのとき、long_query_timeを超えるクエリがスロークエリとして出力されます。
スロークエリを出力する(コンソールからの設定) [#z58bfd20]
ファイルが無いとエラーになるので、最初にファイルを作る
# cd /var/log
# touch mysql_slow.log
# chown mysql:mysql mysql_slow.log
# vi /etc/logrotate.d/mysql
/var/log/mysql_slow.log
/var/log/mysql.log
{
weekly
rotate 10
delaycompress
missingok
}
# mysql -p
mysql> set global slow_query_log_file = '/var/log/mysql_slow.log';
mysql> set global long_query_time = 5;
mysql> set global slow_query_log = ON;
スロークエリを出力する(my.cnfの設定) [#nfc9a9c8]
# vi /etc/my.cnf
[mysqld]
slow_query_log
slow_query_log-file = /var/log/mysql/mysql-slow.sql
long_query_time = 5
デフォルトでは無効になっています。
mysqldumpslowを使って集計する [#s32b45a1]
$ mysqldumpslow -s t /var/log/mysql/mysql-slow.sql
Count: 93 Time=4.40s (409s) Lock=0.00s (0s) Rows=5.0 (465), ebisu[ebisu]@2hosts
show index from `bom`.`logs`
Count: 86 Time=3.76s (323s) Lock=0.00s (0s) Rows=0.4 (34), meguro[meguro]@localhost
SELECT `hash`.`id` FROM `hash` WHERE (`key` = 'S')
-s オプションでどの項目でソートするかを指定することができます。
応用 [#e940a77f]
スロークエリだけでなくすべてのクエリの実行状況を集計することができます。
mysql > set global slow_query_log_file = '/tmp/slow.log';
mysql > set global long_query_time = 0;
参考URL:http://d.hatena.ne.jp/masayuki14/20120704