MySQL常用的查询优化分析方法有哪些?

(1)EXPLAIN分析执行计划,如果要看得更加详细清晰可以使用EXPLAIN FORMAT=JSON

或者EXPLAIN FORMAT=TREE,EXPLAIN ANALYZE,注意后面两个是mysql 8之后的新增功能。

(2) Optimizer Trace

MySQL Optimizer Trace功能会跟踪MySQL优化器对查询优化过程的关键信息,比如扫描的行数,成本,以及为什么选择哪个执行计划,都是有明确的指示。

使用方法:

-- 开启optimizer trace

set optimizer_trace='enabled=on';

-- query;

执行你的SQL;

-- 查看optimizer trace记录

select * from information_schema.optimizer_trace;

(3)Profiling。最新的 MySQL 版本是默认开启 Show Profile 功能的。Show Profiles 只显示最近发给服务器的 SQL 语句,默认情况下是记录最近已执行的 15 条记录,我们可以重新设置 profiling_history_size 增大该存储记录,最大值为 100。获取到 Query_ID 之后,我们再通过 Show Profile for Query ID 语句,就能够查看到对应 Query_ID 的 SQL 语句在执行过程中线程的每个状态所消耗的时间。

除了以上工具以外,我们还需要去分析mysql慢查询日志,还有服务器状态指标 比如CPU ,连接数,有没有长事务,page指标等等。

相关推荐
阿正呀4 小时前
CSS如何规范化侧边栏的样式实现_基于BEM结构拆分侧边栏模块
jvm·数据库·python
2403_883261094 小时前
JavaScript中Nodejs环境内存限制与V8堆大小调整
jvm·数据库·python
桃花键神4 小时前
【2026精品项目】基于SpringBoot3+Vue3的校园小卖铺系统(包含源码+项目文档+SQL脚本+部署教程)
数据库·sql·vue·毕业设计·springboot
2401_833033624 小时前
如何用 CSS 变量配合 JS setProperty 实现动态换肤功能
jvm·数据库·python
2401_898717664 小时前
CSS实现自定义滚动条的定位悬浮_利用fixed定位与伪类
jvm·数据库·python
TDengine (老段)4 小时前
TDengine TSDB 整体构架
大数据·数据库·人工智能·物联网·时序数据库·tdengine·涛思数据
m0_748554814 小时前
如何在 Discord.py 中限制按钮仅由特定角色用户点击
jvm·数据库·python
尘埃落定wf4 小时前
Python 数据库迁移:Alembic 太重?自己动手搭一套轻量版
数据库·python·mysql
Jetev4 小时前
Golang怎么用embed嵌入配置文件_Golang如何将默认配置文件打包进二进制程序【技巧】
jvm·数据库·python