美文网首页@IT·互联网程序员MySQL
由请求超时引发的mysql慢日志问题

由请求超时引发的mysql慢日志问题

作者: 数据运营python | 来源:发表于2017-05-01 14:44 被阅读299次

背景

       由于系统在生产环境运行了一段时间,发现系统超时的接口的请求越来越多,通过服务器的日志发现同样的接口,有时候会超过2s,  有时候又几百毫秒就完成,通过把 接口的 sql拿出来分析执行,工作量有点大。还好之前mysql打开了慢日志的开关,通过对mysql的慢日志进行分析,可以解决大部分的问题。


慢日志设置

1 连接数据库

    mysql -h127.0.0.1 -P3306-uroot -pxxxxx;

2  选择数据库

     use mysql;

3  查看慢日志的设置

    show variables like '%query%';

    long_query_time:单位秒,脚本运行的时间操作这个设置为慢查询

   slow_query_log: 慢日志的开关

   slow_query_log_file:慢日志保存的路径


慢日志分析

1 慢日志下载

通过sz 命令把慢日志下载到本地进行分析

2慢日志的格式说明

# Time: 150401 11:24:27

# User@Host: root[root] @ localhost [127.0.0.1] Id: 7

# Query_time: 0.034002 Lock_time: 0.000000 Rows_sent: 3 Rows_examined: 3

use libu;

SET timestamp=1427858667;

select * from aaa;

分析如下:

(1) Time: 执行时间

(2) User@Host: 执行sql的主机信息

(3) Query_time: sql的执行信息,

      Lock_time: 锁定时间, 

      Rows_sent: 发送(结果)行数,

      Rows_examined:扫描的行数

(4) timestamp: 执行时间

(5) select * from aaa; : 查询语句内容

3慢日志分析的命令

-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

4数据分析结果

通过上述的命令,查找到查询时间比较长的 sql,找到对应的业务进行优化,优化的思路:

1 通过条件的关联减少查询的数据量

2通过建立索引加快查询

3通过业务手段减少数据量的查询

   例如:一般的系统都有分页功能的查询,需要查询到请求的总数量,由于目前需要显示总的数量,没有办法避免不查询总的数量,这个查询会随着数据量的增多而变慢,只能通过业务手段进行处理,例如只是查询某个时间段的数据,而不是查询所有的数据的数量。

相关文章

  • 由请求超时引发的mysql慢日志问题

    背景 由于系统在生产环境运行了一段时间,发现系统超时的接口的请求越来越多,通过服务器的日志发现同样的接口,有...

  • Mysql 慢查询日志

    Mysql 慢查询日志 慢查询日志 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中...

  • MySQL慢查询日志总结

    MySQL慢查询日志总结 慢查询日志概念 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MyS...

  • page_cleaner线程分析

    背景 基础知识 问题 问题1分析(page_cleaner工作机制及mysql错误日志为什么会打印超时日志) 疑问...

  • mysql慢查询日志

    慢查询日志 MySQL 慢查询日志是排查问题 SQL 语句,以及检查当前 MySQL 性能的一个重要功能,执行时间...

  • MySQL慢查询日志如何开启以及分析

    1、MySQL慢查询日志是什么 (1)MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录MySQL中...

  • 慢查询日志

    1、慢查询日志介绍 慢查询日志是什么? 1.MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在My...

  • mysql-慢查询日志

    1、什么是慢查询日志 mysql慢查询日志是mysql提供的一种日志记录,它用来记录在MySQL中响应时间超过...

  • mysql 开启慢查询及其用mysqldumpslow做日志分析

    mysql 开启慢查询 mysql慢查询日志是mysql提供的一种日志记录,它是用来记录在mysql中相应时间超过...

  • mysql慢查询

    慢查询日志概念 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的...

网友评论

    本文标题:由请求超时引发的mysql慢日志问题

    本文链接:https://www.haomeiwen.com/subject/kcwftxtx.html