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