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

相关推荐
l1t4 分钟前
duckdb数据库CROSS JOIN LATERAL 中使用 EXISTS子查询的一个bug
数据库·bug
wregjru17 分钟前
【C++】2.10智能指针详解
数据库·redis·mysql
2401_8582861124 分钟前
从Redis 8.4.0源码看快速排序(1) 宏函数min和swapcode
c语言·数据库·redis·缓存·快速排序·宏函数
茁壮成长的露露36 分钟前
MongoDB单机安装
数据库·mongodb
qq_4061761442 分钟前
JS防抖与节流:从原理到实战的性能优化方案
服务器·数据库·php
a***592642 分钟前
MySQL数据可视化实战指南
数据库·mysql·信息可视化
Maggie_ssss_supp43 分钟前
LINUX-MySQL多表查询
数据库·mysql
lxp1997411 小时前
Mysql短课题全手稿
数据库·mysql
我是一只小青蛙8881 小时前
Python实战:Kingbase数据库高效操作指南
数据库·oracle
龙亘川1 小时前
【课程5.7】代码编写:违建处置指标计算(违建发现率、整改率SQL实现)
数据库·oracle·智慧城市·一网统管平台