MySQLのスロークエリログの概要と表示方法

MySQLのスロークエリログの概要を表示方法についてです。

(1)スロークエリログの概要


 
・スロークエリログは、”min_examined_row_limit”サーバーシステム変数で指定した行以上のクエリで、”long_query_time”サーバーシステム分数で設定した時間以上の実行時間を要した場合にそのSQLをログに記録する。
 
・”long_query_time”のデフォルトは10秒。マイクロ秒単位に設定でき、0にしてすべてを記録することも出来る。
 
・ログをファイルに記録する場合はマイクロ秒単位で時間が記録されるが、テーブルに記録する場合は秒単位。
 
・デフォルトでは、管理用のSQLやインデックスを指定していないクエリは記録されない。変更する場合は、–log-slow-admin-statements、–log-queries-not-using-indexesで設定する。
 
管理用のSQLは、ALTER TABLE, ANALYZE TABLE, CHECK TABLE, CREATE INDEX, DROP INDEX, OPTIMIZE TABLE, REPAIR TABLEなど。
 
・スロークエリログの有効、無効は–slow_query_log[={0|1}]で設定。デフォルトはOFF。
 
・–slow_query_log_file=file_nameでファイル名を指定する事が出来る。
 
指定していない場合のデフォルトは、host_name-slow.logでPIDファイルと同じディレクトリに作成する。
 
ファイル名を指定した場合は、データディレクトリ内に作成する。
 
・–log-outputで、出力先をテーブルに指定する事が出来る。この設定がNONEの場合は、–slow_query_logの設定より優先され、無効になる。デフォルトはFILE。
 
 

(2)mysqldumpslowコマンドでスロークエリログのサマリーを表示


 
●mysqldumpslowコマンド
 
・ある特定の数値や文字列データを除いた類似したクエリーをグループ化して表示。
 
使用例)

shell> mysqldumpslow

Reading mysql slow query log from /usr/local/mysql/data/mysqld51-apple-slow.log
Count: 1  Time=4.32s (4s)  Lock=0.00s (0s)  Rows=0.0 (0), root[root]@localhost
 insert into t2 select * from t1

Count: 3  Time=2.53s (7s)  Lock=0.00s (0s)  Rows=0.0 (0), root[root]@localhost
 insert into t2 select * from t1 limit N

Count: 3  Time=2.13s (6s)  Lock=0.00s (0s)  Rows=0.0 (0), root[root]@localhost
 insert into t1 select * from t1
関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です