本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • MySQL
  • 【MySQL配置教程】slowlog慢日志的配置与分析

【MySQL配置教程】slowlog慢日志的配置与分析

发布:TangLu2020-2-11 11:10分类: MySQL 标签: mysql

一、什么是MySQL慢查询日志

MySQL的slowlog也叫做慢查询日志,它记录了已经执行完成但是执行时间过慢的语句。数据库性能问题大多数都是由于慢查询语句导致,所以慢查询日志可以帮助管理员分析问题所在,起到对SQL进行优化的作用。对于慢语句的优化,通常从高到低逐步进行,比如一开始定义超过5秒的算慢语句,然后等把这部分5秒的慢语句都处理完了再降低到4秒,以此类推。在一个慢查询日志中最需要关注执行次数多、执行时间长、IO大、未命中索引的SQL。


二、配置MySQL慢查询日志

1、编辑my.cnf文件,在[mysqld]模块下增加以下内容以开启慢查询日志并记录到日志文件中,如果修改为记录到表中则是写入到mysql.slow_log这张表

[mysqld]
slow_query_log = on #开启慢查询日志 
slow_query_log_file = /data/mysql/logs/mysql-slow.log #指定日志文件保存路径,不指定的话默认在数据库文件目录下,名为hostname-slow.log 
long_query_time = 2 #指定达到多少秒才算慢查询,设为0代表记录所有查询
log_queries_not_using_indexes = 1 #如果语句没有使用索引也会被记录,即便没有达到阈值
log_throttle_queries_not_using_indexes=60  #和上面选项配合使用,如果那条语句执行频繁,那每分钟最多只记录60次 
# min_examined_row_limit = 1000 #记录查找了多达1000次而引起的慢查询 
# log-slow-admin-statements #记录ALTER TABLE等语句引发的慢查询 
# log-slow-slave-statements #记录从服务器产生的慢查询


2、重启MySQL服务使配置生效

service mysqld restart 


3、登陆数据库查询配置生效情况

mysql > show variables like '%slow%'; 


4、执行一个慢查询语句测试

select sleep(3); 


5、查看慢查询日志文件,如图箭头处显示了执行用户、执行时间以及查询语句。慢查询产生的原因一般是lock_time锁等待时间太长,或者是examined处理的数据太多导致

QQ图片20150807150352.png

 

三、MySQL慢查询日志的分析

方法1:官方自带的mysqldumpslow,使用示例

mysqldumpslow -t 10 mysql-slow.log  #显示top10的慢查询语句
mysqldumpslow -s c -t 10 mysql-slow.log  #返回10条执行次数最多的SQL,通常也是需要优先优化的地方
#常用选项
#-s:排序方法,分有c(执行次数)、al(平均锁时间)、ar(平均返回记录)、at(平均查询时间)等
#-t:返回前N条数据
#-g:正则匹配模式


QQ截图20150807151604.png

 

方法2:第三方工具pt-query-digest(推荐使用),由percona-toolkit软件包所提供。使用示例:

pt-query-digest mysql-slow.log > slow_log.report  #直接分析慢查询日志并将结果输出到文件
pt-query-digest --since=12h mysql-slow.log > slow_log.report #分析最近12个小时的慢查询
pt-query-digest --since '2020-07-07 11:10:00' --until '2020-07-07 11:13:00'  mysql.slow #指定时间范围进行分析


pt-query-digest的分析结果中profile部分是对查询结果进行分组统计,query部分则是具体每个SQL的执行情况了,需要关注的几个信息

查询次数多且执行时间长的SQLpt-query-digest分析结果中的前几个值

IO大的SQLpt-query-digest中的Rows examine项

未命中索引的SQL:注意pt-query-digest中的Row examine(扫描行数)和Rows send(实际发送行数)的对比,如果扫描行数大于了发送行数说明命中次数不高

温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《【MySQL配置教程】slowlog慢日志的配置与分析
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-232.html  [生成短网址]

已有 0/2744 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~