美文网首页mysqlMysql一些收藏
MySQL技术专题(7)优化方案-SQL 慢查询日志

MySQL技术专题(7)优化方案-SQL 慢查询日志

作者: 洛神灬殇 | 来源:发表于2022-03-06 00:27 被阅读0次

    SQL排查

    慢查询日志:

    ** MySQL提供的一种日志记录用于记录MySQL中响应时间超过 阀值 的 sql语句 (long_query)**

    ** 慢查询日志默认是关闭**

    ** 建议:开发调优是打开 而最终部署时关闭 **

    检查是否开启了慢查询日志

    ** show variables like '%slow_query_log';**

    临时开启:

    set global slow_query_log=1

    内存开启

    image

    永久开启:

    image

    阀值: show variables like '%long_query_time%';

    临时设置阀值: set global long_query_time = 5;

    重新登录生效 不需要重启服务

    image

    查询超过阀值得sql : show global status like '%slow_queries';

    cat /var/lib/mysql/localhost-slow.log

    慢查询阀值和mysqldumpslow工具

    image

    (2)通过mysqldumpslow

    工具查看慢sql 可以通过一些过滤条件 快速查找需要定位的慢sql

    mysqldumpslow --help

    s:order排序方式

    r:逆序

    l:锁定时间

    g:正则匹配模式

    -- 获取返回记录组多的3个sql : mysqldumpslow -s r -t 3 /var/lib/mysql/localhost-slow.log

    -- 获取访问次数最多的3个SQL mysqldumpslow -s c -t 3 /var/lib/mysql/localhost-slow.log

    --- 按照时间排序,前10条包含left join 查询语句的sql mysqldumpslow -s t -t 10 -g "left join"

    分析海量数据(show profile)

    用存储过程 、存储函数 模拟海量数据

    image image image

    show profiles

    show variables like '%profiling’

    set profiling = on;

    查询全局日志-general_log(全局日志)

    这些全局的记录操作 仅仅在开发和调优过程中打开即可,部署时一定要关闭

    show variables like '%general_log%';

    - - 执行的所有sql记录在表中

    set global general_log = 1

    set global log_output ='table'

    - -执行的所有sql记录在文件中

    set global log_output ='file'

    set global general_log_file ='/tmp/general.log'

    set global general_log= 1

    image

    开启全局日志 会记录所有sql : 会被记录 到 mysql.general_log表中。

    select * from mysql.general_log

    相关文章

      网友评论

        本文标题:MySQL技术专题(7)优化方案-SQL 慢查询日志

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