我发现很多DBA都不会看执行计划,谈何性能优化……

詹姆斯邦德007 2026-01-06 09:41:27
作为一名DBA,你是否曾遇到过性能瓶颈却无从下手?是否曾经面对慢查询却不知道如何优化?这一切的答案,都藏在执行计划里。令人惊讶的是,相当比例的DBA不会正确解读执行计划,这直接影响了数据库性能调优的效果。

 

 

今天,我们就来深入探讨Oracle、MySQL和PostgreSQL三大数据库执行计划的区别,帮助你成为更优秀的DBA。

 

一、执行计划对比

 

 
1、干预方式不同

 

PostgreSQL 只能通过对表进行分析来改变执行计划,不支持通过添加hint的方式干预执行计划

 

Oracle 不仅可以通过对表进行收集统计来改变执行计划,而且支持通过添加hint的方式直接干预执行计划的生成

 

MySQL 虽然支持类似Oracle的hint功能,但其优化器相对简单,对复杂查询的处理能力不如Oracle强大

 

 
2、缓存机制差异

 

Oracle和SQL Server 会自动缓存执行计划,相同的SQL语句(甚至大小写不同都会被当作不同语句)可以重用执行计划,减少解析开销

 

PostgreSQL 并不会自动缓存执行计划,每次执行SQL查询都会从头开始解析、优化生成执行计划。但它在预处理语句和PL/pgSQL函数中会缓存执行计划

 

 
3、查询效率特点

 

Oracle 在大数据量的统计分析(比较、排序、去重、表关联)上表现优异

 

PostgreSQL 在单条数据处理、空间查询和转换方面表现出色,支持很多方法函数

 

MySQL 在简单查询和读写操作上表现良好,但在复杂查询和大数据量分析方面不如Oracle

 

二、执行计划查看方式

 

 
1、Oracle

 

Oracle执行计划的查看顺序记住这口诀: 最右最上-平级其次-逐层回退

 

缩进越深,执行越早(最内层操作先执行)

 

当缩进相同时,从上到下、从右到左执行,右上优先

 

 

常用的查看执行计划的方式如下

 

 

 
2、MySQL

 

常用的查看执行计划的方式如下

 

 

 
3、PostgreSQL

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
1.预估不执行查询EXPLAIN SELECT * FROM users LIMIT 10;
2.执行查询出执行计划,真实的EXPLAIN ANALYSE SELECT * FROM users LIMIT 10;
加上参数BUFFERS,可以显示有多少数据来自 PostgreSQL 缓存,多少来自磁盘。EXPLAIN (ANALYSE,BUFFERS) SELECT * FROM users LIMIT 10 OFFSET 200;
Verbose是一个提供额外信息的参数,用于获取有关查询的详细信息和其他信息。EXPLAIN (ANALYSE,BUFFERS,VERBOSE) SELECT * FROM users LIMIT 10 OFFSET 500;

 

 

三、执行计划解读

 

无论哪种数据库,解读执行计划都需要关注以下几个关键方面:

 

操作类型:了解每一步操作的类型,如全表扫描(Full Table Scan)、索引查找(Index Lookup)等。

 

成本(Cost):数据库为每个操作分配的成本值,成本越低,执行效率越高。

 

行数(Rows):预估每一步操作返回的行数,有助于识别潜在的性能瓶颈。

 

执行顺序:了解操作的执行顺序,确保查询按照最优路径执行。

 

PostgreSQL执行计划参数

 

 

Oracle执行计划参数

 

 

MySQL执行计划参数

 

 

四、结语

 

掌握执行计划的解读技巧,不仅能让你快速定位性能问题,更能让你深入理解数据库优化器的工作机制,从而设计出更优的数据库模型和SQL语句。执行计划是DBA的核心技能,值得每一位数据库管理员深入学习和掌握。

 

数据库性能优化是一条永无止境的道路,而执行计划是我们在这条道路上最重要的导航仪。从现在开始,重视执行计划,提升你的DBA技能水平吧!

 

 
作者丨詹姆斯邦德007
来源丨公众号:IT邦德(ID:jeamesDB)
dbaplus社群欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn
最新评论
访客 2024年04月08日

如果字段的最大可能长度超过255字节,那么长度值可能…

访客 2024年03月04日

只能说作者太用心了,优秀

访客 2024年02月23日

感谢详解

访客 2024年02月20日

一般干个7-8年(即30岁左右),能做到年入40w-50w;有…

访客 2023年08月20日

230721

活动预告