mysql:如何定位慢查询
mysql:如何定位慢查询
小吴顶呱呱1.如何定位慢查询
慢查询出现情况:
- 聚合查询
- 多表查询
- 表数据量过大查询
- 深度分页查询
1.开源工具
- 调试工具:Arthas
- 运维工具:Prometheus、Skywalking
2.自带慢日志
利用mysql自带慢日志:
慢日志查询记录了所有执行超过指定参数的所有sql语句的日志。如果要开启慢查询日志,需要在mysql的配置文件(/etc/my.conf)中配置如下信息:
配置完毕后,通过以下指令重新 启动mysql服务器进行测试,查看慢日志文件中记录的信息/var/lib/mysql/localhost-slow.log
2.如何优化慢查询
1.可以才用EXPLAIN或者DESC命令获取Mysql如何执行select语句的信息
- possible_key 当前SQL可能会使用到的索引
- key 当前SQL实际命中的索引
- key_len 索引占用的大小
- Extra 额外的优化建议
- type 这条sql的连接类型,性能由好到差为null、system、const、eq_ref、ref、range、index、all
- system:查询系统中的表
- const:根据主键查询
- eq_ref:主键索引或者唯一索引查询
- ref:索引查询
- range:范围查询
- index:索引树扫描
- all:全盘扫描
总结:可以采用mysql子弹带的分析根据EXPLAIN
- 通过key和key_len检查是否命中了索引(索引本省存在是否失效的情况)
- 通过type字段查看sql是否有进一步的优化空间,是否存在全索引扫描或全盘扫描
- 通过extra建议判断,是否出现了回表,如果出现了,可以尝试添加索引或修改返回字段来修复
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果