MySQLのクエリログ・スローログ出力
MySQL で実行されたクエリ、時間のかかっているクエリをログ出力したい。
環境
- OS
- Windows7
- CentOS5.7
- MySQL5.1.13
参考
概観
出力の指定
方法はいくつかあるらしい。
- 起動オプションで指定する
- コンフィグで指定する
ここでは、コンフィグで指定する方法を採った。
出力先
- ファイル
- テーブル
コンフィグの指定方法
クエリログとスローログ共通設定
キー | 説明 | 設定値 | 設定例 | 補足 |
---|---|---|---|---|
log_output | ログ出力先 | TABLE/NONE/FILE | log_output=TABLE | default=TABLE。 TABLE,FILEと記載すると、両方に出力。 |
クエリログ(一般ログ)
◇設定ファイルの指定方法
[mysqld]セクション
キー | 説明 | 設定値 | 設定例 |
---|---|---|---|
general_log | 出力要否 | 出力する場合、1(ONでもよいらしい) | general_log=1 |
general_log_file | 出力先ファイル名 | ファイル名 | general_log_file="C:/mysql/query.log" |
◇log_output=TABLEの場合の出力先
<
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
event_time | timestamp | NO | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | |
user_host | mediumtext | NO | NULL | ||
thread_id | int(11) | NO | NULL | ||
server_id | int(10) unsigned | NO | NULL | ||
command_type | varchar(64) | NO | NULL | ||
argument | mediumtext | NO | NULL |
スロークエリログ
◇設定ファイルの指定方法
[mysqld]セクション
キー | 説明 | 設定値 | 設定例 |
---|---|---|---|
slow_query_log | 出力要否 | 出力する場合、1(ONでもよいらしい) | slow_query_log=1 |
long_query_time | long query とみなす閾値 | 秒数 | long_query_time=0.1 |
slow_query_log_file | スローログ出力先 | ログファイル名 | slow_query_log_file="c:/mysql/slow.log" |
min_examined_row_limit | n回以上実行されたクエリを出力 | 回数 | min_examined_row_limit=1000 |
log-queries-not-using-indexes | インデックスを使用しないクエリを出力 | 1 | log-queries-not-using-indexes=1 |
◇log_output=TABLEの場合の出力先
<
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
start_time | timestamp | NO | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | |
user_host | mediumtext | NO | NULL | ||
query_time | time | NO | NULL | ||
lock_time | time | NO | NULL | ||
rows_sent | int(11) | NO | NULL | ||
rows_examined | int(11) | NO | NULL | ||
db | varchar(512) | NO | NULL | ||
last_insert_id | int(11) | NO | NULL | ||
insert_id | int(11) | NO | NULL | ||
server_id | int(10) unsigned | NO | NULL | ||
sql_text | mediumtext | NO | NULL |
◇スローログの例
Time Id Command Argument
# Time: 120109 22:34:00
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 0.003000 Lock_time: 0.000000 Rows_sent: 92 Rows_examined: 92
SET timestamp=1326116040;
select * from general_log;