Mysql如何定位慢查询,以及SQL语句执行很慢, 如何分析呢?
发布于 2024-07-17
1385
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
springboot葵花宝典
扫码关注公众号
扫码阅读
手机扫码阅读
MySQL慢查询分析摘要
慢查询的定义与表象
慢查询通常表现为页面加载过慢或接口压测响应时间过长(超过1秒)。通过分析可以定位问题并优化SQL执行效率。
定位慢查询的方案
方案一:开源工具
推荐使用Arthas、Prometheus和Skywalking等工具进行调试或运维监测,快速定位慢查询问题。
方案二:MySQL慢查询日志
MySQL自带慢查询日志记录所有执行时间超过指定参数(long_query_time)的SQL语句。默认未开启,可通过以下方式启用:
- 在配置文件
/etc/my.cnf中设置slow_query_log=1。 - 设置慢查询时间为2秒:
long_query_time=2。 - 检查日志文件地址:
show variables like '%slow_query_log%'; - 重启MySQL服务器后,通过日志文件查看记录。
慢查询定位总结
通过慢查询日志记录,可以定位SQL执行超过2秒的语句。在调试阶段结合工具(如Skywalking),可监测接口慢问题并找到问题根源。
SQL性能分析:EXPLAIN执行计划
对于执行缓慢的SQL语句,可使用EXPLAIN或DESC命令分析其执行计划。以下为相关字段及含义:
| 字段 | 含义 |
|---|---|
| id | 表示执行顺序,值越大优先执行。 |
| select_type | SELECT类型,如SIMPLE(简单表查询)、PRIMARY(主查询)等。 |
| type | 连接类型,如NULL、system、const、range等,性能由好到差。 |
| possible_key | 显示可能使用的索引。 |
| key | 实际使用的索引。 |
| key_len | 索引占用的大小。 |
| Extra | 额外优化建议,比如Using where、Using index等。 |
type连接类型说明
- system:查询系统表时出现。
- const:主键查询,如:
explain select * from tb_user where id=1; - eq_ref:唯一索引或主键等值连接检索,常见于外键关联查询。
- ref:非唯一索引等值连接检索。
- range:索引范围查询,例如使用BETWEEN或>操作符。
springboot葵花宝典
springboot葵花宝典
扫码关注公众号
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
查看方案
springboot葵花宝典的其他文章
SpringBoot-12-banner自定义
SpringBoot-12-banner自定义主要介绍Banner实现的两种方式:通过代码方式实现和通过静态文件方式实现
Java并发篇面试总结
1. 线程状态
要求
掌握 Java 线程六种状态
掌握 Java
SpringSecurity-12-PasswordEncoder密码加密简介
SpringSecurity-12-PasswordEncoder密码加密简介为
突破创新:ELK的替代者——分布式日志收集新宠 Graylog 登场
突破创新:ELK的替代者——分布式日志收集新宠 Graylog
Web-7-深入理解Cookie与Session:实现用户跟踪和数据存储
Cookie和Session是常用的Web会话管理技术。Cookie是存储在浏览器中的小型文本文件,用于跟踪和存储用户信息。Session是服务器端通过唯一标识符来跟踪用户会话状态的机制,通常将数据存储在服务器上
加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线
白皮书上线