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指标等等。

相关推荐
2401_867623984 分钟前
如何解决OUI图形界面无法调用_xhost与DISPLAY变量设置
jvm·数据库·python
czlczl200209258 分钟前
Mysql读写分离的过期读问题
数据库·mysql
2401_8246976620 分钟前
CSS如何实现元素反转特效_使用transform-scaleX(-1)操作
jvm·数据库·python
皮皮学姐分享-ppx27 分钟前
上市公司数字技术风险暴露数据(2010-2024)|《经济研究》同款大模型测算
大数据·网络·数据库·人工智能·chatgpt·制造
CLX050527 分钟前
如何在 WordPress AMP 网站中为特定模板禁用 AMP 渲染
jvm·数据库·python
神明93131 分钟前
如何实现SQL动态字段选择查询_利用反射或动态拼接字符串
jvm·数据库·python
m0_7335654642 分钟前
golang如何实现RabbitMQ死信队列_golang RabbitMQ死信队列实现教程
jvm·数据库·python
weixin_444012931 小时前
CSS定位如何实现模态框垂直居中_使用负边距或transform
jvm·数据库·python
2301_783848651 小时前
Go 中实现高效图最大团划分的实践与边界分析
jvm·数据库·python
2401_884454151 小时前
C#怎么实现Socket心跳包 C#如何在TCP Socket通信中设计心跳机制检测连接状态【网络】
jvm·数据库·python