顾名思义,慢查询日志中记录的是执行时间较长的query,从5.6开始slow log位置的参数从 log-slow-queries 变为
slow_query_log_file ## 不指定的话默认名为 主机名-slow.log
slow_query_log = 1 ## 开启慢查询
long_query_time = 2 ## 指定超时时间 2S 记录到慢查询日志, 默认是10s。
log_queries_not_using_indexes = 1 ## log下来没有使用索引的query 我们是开启的
log_slow_admin_statements = 1 ##记录管理操作,alter/analyze table
log_slow_slave_statements = 1 ##记录由slave产生的查询日志
expire_logs_days = 90 ##binlog 日志保留时间,超时会自动清理
min_examined_row_limit = 100 ## 扫描记录小于该值的SQL不记录到慢查询日志中,
eg:当我执行如下命令时,对应的慢查询日志中,可以看到只有超过涉及到100行数据才会记录到慢查询日志中。而limit 40 limit 49的sql都没有记录。
mysql> insert into yao select * from yao limit 50;
Query OK, 50 rows affected (0.01 sec)
Records: 50 Duplicates: 0 Warnings: 0
mysql> insert into yao select * from yao limit 40;
Query OK, 40 rows affected (0.00 sec)
Records: 40 Duplicates: 0 Warnings: 0
mysql> insert into yao select * from yao limit 49;
Query OK, 49 rows affected (0.00 sec)
Records: 49 Duplicates: 0 Warnings: 0
# Query_time: 0.009162 Lock_time: 0.000078 Rows_sent: 0 Rows_examined: 100
SET timestamp=1537844390;
insert into yao select * from yao limit 50;
# Time: 2018-09-25T03:00:12.174658Z
# User@Host: root[root] @ localhost [] Id: 6
# Query_time: 0.007614 Lock_time: 0.000107 Rows_sent: 0 Rows_examined: 118
SET timestamp=1537844412;
insert into yao select * from yao limit 59;
mysqldumpslow
[root@slave mysql_data]# mysqldumpslow -s ORDER -t 2 slow.log
Reading mysql slow query log from slow.log
Count: 5 Time=0.01s (0s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@localhost
insert into yao select * from yao limit N
Count: 1 Time=24.85s (24s) Lock=0.00s (0s) Rows=0.0 (0), []@[]
throttle: N 'S' warning(s) suppressed.
一般线上slow log文件很大,我们一般tail 部分行来采样解析。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29990276/viewspace-1839588/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29990276/viewspace-1839588/