mysql 慢sql日志的解读排查
Posted 健康平安的活着
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 慢sql日志的解读排查相关的知识,希望对你有一定的参考价值。
一 概述
1.mysql的慢查询日志是MySQL提供的一种日志记录 ,它用来记录在 MySQL 中响应时间超过阀值的语句,具 体指 运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中 。 2. 具体指运行时间超过 long_query_time 值的 SQL ,则会被记录到慢查询日志中。 long_query_time的默认值为 10,意思是运行10秒以上的语句。 3.由他来查看哪些 SQL 超出了我们的最大忍耐时间值,比如一条 sql 执行超过 5 秒钟,我们就算慢 SQL ,希望能 收集超过5 秒的 sql ,结合之前 explain 进行全面分析。二 方法一
2.1 查看慢sql日志
默认情况下, MySQL 数据库没有开启慢查询日志 ,需要我们手动来设置这个参数。 当然,如果不是调优需要的话,一般不建议启动该参数 ,因为开启慢查询日志会或多或少带来一定的性能影响。 慢查询日志支持将日志记录写入文件2.2 临时性操作步骤
1.查看mysql日志是否开启
SHOW VARIABLES LIKE '%slow_query_log%';
默认是关闭的
2.开启mysql日志
set global slow_query_log=1;
SHOW VARIABLES LIKE '%slow_query_log%';
3.设置阈值时间
1.查看默认的阈值
2.设置阈值
set long_query_time=3
4.关闭阈值
set global slow_query_log=0;
SHOW VARIABLES LIKE '%slow_query_log%';
2.3 永久性操作步骤
1.linux版本:如永久生效需要修改配置文件 my.cnf 中[mysqld]下配置
[mysqld] slow_query_log=1 slow_query_log_file=/var/lib/mysql/atguigu-slow.log long_query_time=3 log_output=FILE 2.windows版本:如永久生效需要修改配置文件 my.ini 中 [mysqld] 下配置 [mysqld] slow_query_log=1 slow_query_log_file=D:\\mysql-5.7.21-winx64\\data\\LAPTOP-VC53HCIP-slow.log long_query_time=3 log_output=FILE2.4 从慢sql日志文件中找出慢sql
运行查询时间长的 sql ,打开慢查询日志查看2.5 分析慢sql的工具mysqldump
按照上面配置后,找到慢sql的生成目录,使用mysqldump工具进行排查
案例:
得到返回记录集最多的 10 个 SQL mysqldumpslow -s r -t 10 /var/lib/mysql/lala-slow.log 得到访问次数最多的 10 个 SQL mysqldumpslow -s c -t 10 /var/lib/mysql/atguigu-slow.log 得到按照时间排序的前 10 条里面含有左连接的查询语句 mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/atguigu-slow.log 另外建议在使用这些命令时结合 | 和 more 使用 ,否则有可能出现爆屏情况 mysqldumpslow -s r -t 10 /var/lib/mysql/atguigu-slow.log | more三 方法二 SHOW PROCESSLIST
3.1 show processlist
以上是关于mysql 慢sql日志的解读排查的主要内容,如果未能解决你的问题,请参考以下文章