MySQL慢查询分析

作者: Okami_ | 来源:发表于2019-04-17 14:10 被阅读69次

慢查询的定义

  • MySQL可以记录所有执行操作long_query_time参数设定的时间阈值的SQL语句的日志--满查询日志。该日志能为SQL语句的优化带来很好的帮助
  • 默认情况下,慢查询日志是关闭的,要使用慢查询日志功能,首先要开启慢查询日志功能

启动慢查询日志

  • 常用配置

    • slow_query_log 启动停止记录慢查询日志
    • slow_query_log_file 指定慢查询日志的存储路径及文件(默认和数据文件放在一起)
    • long_queries_not_using_indexes 是否记录未使用索引的SQL
    • log_output 日志存放的位置
  • 查看慢查询日志信息: `SHOW VARIABLES LIKE '%slow_query_log%'


  • 开启慢查询日志: SET GLOBAL slow_query_log = 1;

  • 关闭慢查询日志: SET GLOBAL slow_query_log = 0;

慢查询日志的内容

行号 内容
1 用户名、用户的IP信息、线程ID号
2 执行花费的时间
3 执行获得锁的时间
4 获得的结果行数
5 扫描的数据行数
6 SQL执行的具体时间
7 具体的SQL语句

慢查询分析工具-mysqldumpslow

  • 汇总除查询条件外其他完全相同的SQL,并将分析结果按照参数中所指定的顺序输出

  • 语法

mysqldumpslow -s r-t 10 slow-mysql.log
-s order (c, t, l, r, at, al, ar)
c:总次数
t:总时间
l:锁的时间
r:总数据行
at,al,ar : t,l,r 平均数 【例如:at = 总时间 / 总次数】

-t top 指定取前面几天作为结果输出
mysqldumpslow结果样例

慢查询分析工具 - pt_query_digest

  • pt_query_digest可以远程的分析慢查询日志信息


  • 汇总信息

    • 总的查询时间(Exec time)

    • 总的锁定时间(Lock time)

    • 总的获取数据量(Rows sent)

    • 扫描的数据量(Rows examine)

    • 查询大小(Query size)


      汇总信息
    • Response: 总的响应时间

    • time:该查询在本次分析中总的时间占比

    • calls:执行次数,即本次分析总共有多少条这种类型的查询语句

    • R/Call:平均每次执行的响应时间

    • Item:查询对象

Profile
  • 执行计划

相关文章

网友评论

    本文标题:MySQL慢查询分析

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