MySQL5.0†# vi /etc/my.cnf [mysqld] log-slow-queries = /var/log/mysql_slow.log long_query_time = 1 log-queries-not-using-indexes
MySQL5.5以上†設定の確認†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を超えるクエリがスロークエリとして出力されます。 スロークエリを出力する(コンソールからの設定)†ファイルが無いとエラーになるので、最初にファイルを作る # 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の設定)†# vi /etc/my.cnf [mysqld] slow_query_log slow_query_log-file = /var/log/mysql/mysql-slow.sql long_query_time = 5 デフォルトでは無効になっています。 mysqldumpslowを使って集計する†$ 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 オプションでどの項目でソートするかを指定することができます。 応用†スロークエリだけでなくすべてのクエリの実行状況を集計することができます。 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
|