-
(二十二) 程序员必备: 10秒到0.1秒,亿级数据下MySQL慢查询分析教程
- 网站名称:(二十二) 程序员必备: 10秒到0.1秒,亿级数据下MySQL慢查询分析教程
- 网站分类:技术文章
- 收录时间:2025-06-08 15:53
- 网站地址:
“(二十二) 程序员必备: 10秒到0.1秒,亿级数据下MySQL慢查询分析教程” 网站介绍
我们在日常使用和面试中,经常遇见sql优化的问题,今天阳仔就带大家详细介绍一下mysql的优化向的知识和相关技巧;
一.哪些场景会出现慢查询?
主要体现就是查询sql 时间比较长,接口相应时间长,导致页面加载也比较慢,那么哪些情况会出现慢查询了,主要是以下几种情况:
- 聚合查询
- 多表查询
- 表数据量过大查询
- 深度分页查询
二. 如何定位慢查询了?
方案一: 开源工具(实际用的比价多)
- 调试工具: Arthas (阿里开源项目,YYDS)
官方定义: Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。
主要都是命令行操作为主,官方有中文文档,使用起来比较简单,不懂的可以直接去官方查看文档.
如何通过Arthas 来分析慢查询了?
使用trace命令
原理就是追踪线程中具体方法的响应时间来确认慢查询,Arthas 会给出具体的追踪分析数据,可以看到具体的调用次数,总耗时,平均耗时等信息.
- 运维工具:
Prometheus : (2012 年的google 开源项目,且持续在运营中.)
原理: 通过http协议周期性的抓取被监控的组件的状态
中文文档地址
:https://prometheus.fuckcloudnative.io/di-yi-zhang-jie-shao/overview
具有单独的管理界面 也可以命令行操作,也可以接入第三方工具使用.
如何使用Prometheus来定位慢查询?
- 需要在mysql中配置慢查询的日志
2,在Prometheus中安装mysql exporter 插件并配置
- 配置Prometheus
- 可视化查看慢mysql的慢查询结构 ,需要安装Grafana ,配置上Prometheus 的数据源即可
Skywalking (笔者之前就是用的这个,单体应用和微服务都可以用)
分布式系统,最合适使用的应用程序性能监控工具,提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。
中文文档地址
:https://skywalking.apache.org/zh/2020-04-19-skywalking-quick-start/#
可以直接看到接口的执行时间,非常方便
还可以直接追踪具体的sql ,功能非常强大 ,使用也很简单
方案二: mysql 自带的慢日志查询 (只在测试环境中使用,生产环境不使用,有性能问题)
配置完毕之后,通过以下指令重新启动MySQL服务器进行测试,查看慢日志文件中记录的信息
/var/lib/mysql/localhost-slow.log。
方案三: 增加系统日志
使用项目自带日志,对关键接口的相应时间 进行系统日志记录,再从代码层面反推具体的sql问题,比较适合业务量还不大的项目.
方案四 : 使用'explain'命令 进行sql 语句的解析
这个是对于比较负责的业务,在写了sql语句后,需要对sql 语句是否变慢做一个校验,主要是定位到慢SQL后的分析工作.可以配置前面的方案一起使用,可以确认以下sql 是否命中索引,是否进行了全表扫描
possible_key: 主要是可能用到的所有
key: 当前已经命中的索引
key_len: 索引占用的内存大小
extra : 优化的建议
type: sql的链接类型 性格: null>system (系统中的表)>const (主键)> eq_ref (主键/唯一索引)> ref (索引)>range(范围) > index (索引树)> all (全盘扫描)
一般type 为index/all 此时sql就需要优化了
哪些场景会出现慢查询? 如何定位慢查询? 如何分析慢查询? 你们的项目中都是怎么来处理了的? 评论区留下你的看法
更多相关网站
- 云服务器:SQL数据库超时的原因与解决方法
- 一个时间戳精度问题,引发了一个MySQL血案
- MySQL各种SQL的执行频率
- PGSQL提取本月跨越的周数及每周的开始结束日期
- '0000-00-00'日期可以存入MySQL吗
- 【SQL】SQL 语法差异大全(PgSQL/MySQL/Oracle/TiDB/OceanBase)
- 了解SQL吗
- SQL用了两年多,分享2个最常用的小技巧
- 从Sql角度,对比学习Python数据处理包pandas
- SqlServer根据身份证号码查询出生日期和年龄
- 吊打面试官(十一)--Java语言中日期处理相关问题总结
- 玩转MySQL的时间类型:Date、DateTime、TimeStamp、Time
- 多表关联查询的性能优化技巧:预关联
- SQL学习:SQL同比分析案例讲解,一看就懂
- java.util.Date、java.sql.Date、java.sql.Timestamp区别和总结
- 疯传!Java 日期时间底层逻辑大揭秘,看完直接拿捏面试官挖的坑!
- 记一次有意思的 SQL 实现 → 分组后取每组的第一条记录
- 全量跑1小时 vs 增量抽1分钟!选对时间戳&主键增量的ETL方法更省时
- 最近发表
-
- 联想推出 IdeaPad 14s / 15s:均为 3399 元,运行 Win11 系统
- 顶配版ThinkPad X1 Carbon评测
- 联想ThinkPad X1 Carbon评测
- lenovo联想 拯救者-14 加装ssd、内存及win10转移到ssd经验谈
- 联想发布新款耳机鼠标等配件:专为ThinkPad X1设计
- 杜比全景音体验,联想K4 Note在印度正式发布
- 3099 元起,联想推出 IdeaPad 15:约10小时续航,预装 Win11系统
- 联想拯救者Y70、小新Pad Pro 2022发布丨拯救者Y70测评体验
- 千元可定制!联想K4 Note印度发布:杜比全景音体验
- 声临其境 联想TAB2 A10平板联手杜比
- 标签列表
-
- serv-u 破解版 (6)
- 极域电子教室2009 (6)
- 6300主题下载 (1)
- oracle11204下载 (1)
- c++论坛 (14)
- huaweiupdateextractor (4)
- thinkphp6下载 (7)
- 前端论坛 (11)
- mysql 时间索引 (13)
- mydisktest_v298 (35)
- unlocker208 (1)
- sql 日期比较 (33)
- document.appendchild (35)
- 头像打包下载 (35)
- 二调符号库 (23)
- oppoa5专用解锁工具包 (8)
- acmecadconverter_8.52绿色版 (25)
- oracle timestamp比较大小 (7)
- chm editor破解版 (7)
- throttlestop防止降频 (9)
- f12019破解 (16)
- 流星蝴蝶剑修改器 (18)
- pygame中文手册 (2)
- 联想杜比音效驱动下载 (10)