MySQL 性能分析大杀器(第三章)

今天让我们了解下 MySQL 性能分析大杀器 —— 开启慢查询日志。

开启慢查询日志

  • 查看是否开启及如何开启慢查询日志
# 查看是否开启了慢查询日志
show variables like '%slow_query_log%';

# 开启慢查询日志(临时开启)
set global slow_query_log = 1;

如果要永久生效,就必须修改配置文件 my.cnf (其他系统变量也是如此)
修改 my.cnf 文件,[mysqld] 下增加或修改参数 slow_query_log 和 slow_query_log_file 后,然后重启 MySQL 服务器。

slow_query_log = 1 
slow_query_log_file = /var/lib/mysql/slow-query.log

慢查询日志是由参数 long_query_time 控制,默认情况下 long_query_time 的值为 10 秒,可以使用以下命令查看

show variables like 'long_query_time%';

可以使用命令修改,也可以在 my.cnf 参数里面修改。
假如运行时间正好等于 long_query_time 的情况,并不会被记录下来。也就是说,在 mysql 源码里是 判断大于 long_query_time,而非大于等于

设置阙值到 3 秒钟的就是慢 sql

set global long_query_time = 3

设置慢查询日志阙值后看不出变化?

  1. 需要重新连接或新开一个会话才能看到修改值
  2. 或者直接使用以下命令也可以看到修改后的结果
show global variables like 'long_query_time';

如何测试?

# 模拟查询超过 4 秒钟
select sleep(4);

查看慢查询日志中记录了有多少条慢 sql

show global status like '%Slow_queries%';

慢查询分析工具 mysqldumpslow

可用参数:

  • s : 表示按照何种方式排序
  • c :访问次数
  • l :锁定时间
  • r :返回记录
  • t :查询时间
  • al :平均锁定时间
  • ar :平均返回记录数
  • at :平均查询时间
  • t :即返回前面多少条的数据
  • g :后边搭配一个正则匹配模式,大小写不敏感的
# 得到返回记录集最多的 10 条 sql
mysqldumpslow -s r -t 10 /var/lib/mysql/slow-query.log

# 得到访问次数最多的 10 条 sql
mysqldumpslow -s c -t 10 /var/lib/mysql/slow-query.log

# 得到按照时间排序的前 10 条里面包含左连接的查询语句
mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/slow-query.log

另外建议在使用这些命令时结合 | 和 more 使用,否则有可能出现爆屏情况
mysqldumpslow -s r -t 10 /var/lib/mysql/slow-query.log | more

最后说个事
公号算法变了,为防止看不到我的更新
大家帮忙加个星标
点击上方的公众号卡片
再点右上角三个点
就能看到设为星标
算我跪下来求你们

作者简介:

95后某跨境电商企业程序猿,白天搬砖码代码,晚上自媒体写文章,持续更新编程、科技、互联网相关文章,偶尔也会无痛呻吟,感慨人生百态。自己淋过雨,所以也想为别人撑撑伞。

往期精选:

微信上的这3个隐藏“标志”,代表有人喜欢你,一眼便知

微信,看看你的另一半跟谁聊天频繁!

微信上已删除的聊天记录,用这几种方式就可以恢复啦!

让你的微信“拍一拍”有趣且不失风度

微信年度账单来了,不敢看!

还在使用默认的微信图标?赶紧换个吧!

我的微信和你们的不一样!?

原文始发于微信公众号(浅墨觅尘往):MySQL 性能分析大杀器(第三章)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/222103.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!