Mysql慢日志分析

1,慢日志配置

1)my.cnf文件
long_query_time = 0.5 //执行时间超过0.5s的sql会被记录下来
slow_query_log = ON //开启慢查询
slow_query_log_file = /var/log/mysql/slowquery.log //慢查询日志位置,默认在mysql的数据目录生成。
log_queries_not_using_indexes = OFF //未使用索引的sql查询是否记录

修改my.cnf的[mysqld]相关的配置需要重启mysqld服务,或者使用set global var = value动态修改。

2)查看日志。

查看最后n行数据
tail -100(或者 -n 100) slowquery.log > /home/zhanqi/slowquery.log
查看开头n行数据
head -100(或者 -n 100) slowquery.log > /home/zhanqi/slowquery.log
查看某几行的数据
cat slowquery.log | head -n 100 | tail -n 50 //查看50 -100行的数据,不包含50和100这两行
sed -n "50, 100p" slowquery.log // 包含50和100这两行

3)分析日志。

Time: 2017-05-26T02:21:45.263281Z 执行sql的时间点
User@Host: root[root] @ [210.73.xxx.xxx] Id: 14032 执行sql的主机信息
Query_time: 2.080283 Lock_time: 0.000038 Rows_sent: 1 Rows_examined: 10221443 执行所用时间锁定时间返回行数扫描行数
SET timestamp=1495765305; 执行sql时unix时间戳(s),* 1000 转成java中的时间戳(ms)
select count(*) as col_0_0_ from course_info courseinfo0_ where courseinfo0_.merchantId=100 limit 1; sql语句

    原文作者:沐兮_d64c
    原文地址: https://www.jianshu.com/p/65a15aa6f4fd
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞