mysql默认未开启慢查询记录功能;默认慢查询时间为10秒。
一、mysql开启慢查询日志记录
// 查看慢查询是否开启
show variables like 'slow_query%';
show variables like 'long_query_time';
// 设置慢查询
set GLOBAL slow_query_log='ON';
set long_query_time=2;
set GLOBAL long_query_time=2;
// 测试慢查询是否生效
select sleep(2)
// 配置文件修改慢查询
[mysqld]
slow_query_log = ON
long_query_time = 2
slow_query_log_file = /usr/local/mysql/data/slow.log
// 重启mysql
systemctl restart mysql
二、利用mysqldumpslow命令,对慢查询日志进行分析统计
-
参数解释
-s, 是表示按照何种方式排序
c: 访问计数
l: 锁定时间
r: 返回记录
t: 查询时间
al:平均锁定时间
ar:平均返回记录数
at:平均查询时间
-t, 是top n的意思,即为返回前面多少条的数据;
-g, 后边可以写一个正则匹配模式,大小写不敏感的; -
基本用法
- 得到返回记录集最多的10个SQL。
mysqldumpslow -s r -t 10 /database/mysql/mysql06_slow.log
- 得到访问次数最多的10个SQL
mysqldumpslow -s c -t 10 /database/mysql/mysql06_slow.log
- 得到按照时间排序的前10条里面含有左连接的查询语句。
mysqldumpslow -s t -t 10 -g “left join” /database/mysql/mysql06_slow.log
- 在使用这些命令时结合 | 和more 使用 ,否则有可能出现刷屏的情况。
mysqldumpslow -s r -t 20 /mysqldata/mysql/mysql06-slow.log | more
网友评论