执行计划与如何找出需要优化的sql语句
2023-02-18 16:47:27 时间
1.sql语句的执行计划,可以通过explain查看,有三种格式,traditional、json和tree;
默认是传统格式,可以通过explain format=tree/json +sql来选择其他格式
如
explain format=tree select count(*) from customer inner join payment using(customer_id) where store_id = 1\G;
2.执行计划是由优化器进行选择的,通过设置优化器跟踪可以了解选择执行路径的原因
使用优化器跟踪分为四步,
- 打开优化器跟踪功能:set optimizer_trace = "enabled=on"
- 执行需要跟踪的sql语句
- 查询视图information_schema.optimizer_trace
- 关闭优化器跟踪功能,set optimizer_trace = "enabled=off"
通常可以通过workbench,mysql enterprise monitor等数据库工具找出消耗资源最多的sql语句,当然也可以sys视图来找出需要优化的sql;
最需要优化的sql并不是指的单次执行时间最长的sql语句,而应该是总计执行时间最长的sql语句,它等于执行次数乘以单次执行时间。
sys数据库视图是建立在performance_schema数据库上的,在sys.statement_analysis中找出总计执行时间最长的sql,同样也可以在performance_schema.events_statements_summary_by_digest查找
如
- 如果要清空以前的sql语句并重新进行统计,执行如下存储过程:
call sys.ps_truncate_all_tables(false);
相关文章
- 2022-12-13:游戏玩法分析 I。写一条 SQL 查询语句获取每位玩家 第一次登陆平台的日期。 +-----------+-------------+ |
- 【干货整理】云数据库时代,DBA将走向何方?
- 数据库周期表整体设计方案
- 自动依据你的数据库生成SQL练习题及答案,宝藏软件鉴赏
- Diesel框架对于数据库的使用和实战,在PostgreSQL的基础上的使用【Diesel】
- 还在手写SQL实现?试试MyBatis-Plus同款IDEA插件吧!提示太全了,还能一键生成代码!
- 5分钟自建数据库可视化平台,在线管理数据库也太方便了!
- Mysql字符集-Mysql进阶(一)
- InnoDB & index页-mysql详解(二)
- 索引-mysql详解(三)
- 系统表空间-mysql详解(四)
- 连接查询-mysql详解(五)
- Mysql优化器-mysql详解(六)
- 执行计划--mysql详解(七)
- Buffer pool--mysql详解(八)
- Redo日志--mysql详解(九)
- Undo日志--mysql详解(十)
- Mvcc--mysql详解(十一)
- Mysql锁--mysql详解(十二)
- 腾讯云⾃建Oracle Rac集群(单SCAN-IP&双节点)