mysql中抓取慢sql
2021/9/23 19:45:06
本文主要是介绍mysql中抓取慢sql,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
优化思路:抓取(范围) 》定位(缩小范围) 》分析并给出建议
1、抓取,首先开启mysql慢查询
mysql服务器中找到my.Conf的配置文件,slow_query_log=1表示将大于1秒的sql语句抓取出来,slow_query_log_file=/var/log/mysql/slowquery_jumei.log表示将日志输出到/var/log/mysql/slowquery_jumei.log
注意:配置文件改动后重启服务(service XXX restart)/重启机器(reboot)
重启成功后使用mysql客户端验证慢查询是否开启成功,如下图:
2、缩小范围,使用mysqldumpslow分析慢查询抓取到的日志文件
① mysqldumpslow -s c -t 5 /var/log/mysql/slowquery.log可以看出访问次数最多的5个sql语句
② mysqldumpslow -s r -t 5 /var/log/mysql/slowquery.log可以看出返回记录集最多的5个sql
③ mysqldumpslow -t 5 -s t -g “ left join” /var/log/mysql/slowquery.log按时间返回前5条里面含有左连接的sql语句
3、抓到sql语句后使用explain优化sql
用法:explain后跟要优化的sql语句
4、重点关注点:
① type 表示mysql在表中找到所需行的方式,又称“访问类型”,常见类型如下:从左至右,有最差到最好:
All index range ref eq_ref const system null
② Key显示mysql在查询中实际使用的索引,若没有使用索引,显示为null
③ Rows 表示mysql根据表统计信息以及索引选用情况,估算找到所需记录需要读取的行数(越小越好)
④ Extra
如果是only index 这意味着信息只用索引树中的信息检索出的,这比扫描整个表要快。
如果是where used ,就是使用上了where限制。
如果是impossible where 表示用不着where,一般就是没查出来啥。
如果此信息显示Using filesort 或者Using temporary的话会很吃力,where和order by的索引经常无法兼顾,如果按照where来确定索引,那么在order by时,就必然会引起Using filesort,这就要看是先过滤再排序划算,还是先排序再过滤划算
这篇关于mysql中抓取慢sql的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-25如何部署MySQL集群资料:新手入门教程
- 2024-12-24MySQL集群部署资料:新手入门教程
- 2024-12-24MySQL集群资料详解:新手入门教程
- 2024-12-24MySQL集群部署入门教程
- 2024-12-24部署MySQL集群学习:新手入门教程
- 2024-12-24部署MySQL集群入门:一步一步搭建指南
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解
- 2024-12-07MySQL分库分表入门指南