PostgreSQL执行计划explain

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: PostgreSQL执行计划explain

入口函数为ExplainOnePlan,他会创建一个查询描述结构queryDesc,然后进入执行器执行ExecutorStart、ExecutorRun、ExecutorFinish、ExecutorEnd。当然执行explain时可以添加analyze参数,当添加这个参数时才会执行ExecutorRun即真正执行该查询。

打印执行计划是由函数ExplainPrintPlan完成,该函数调用ExplainNode,由入参PlanState结构传递Plan tree。该PlanState有initPlan(非相关子查询)、lefttree、righttree、subPlan等。遍历计划树就是对这几个节点链进行递归遍历。可以看到,他打印完本节点信息后,若有左右子树则递归进行ExplainNode,然后对特殊节点进行特殊处理,使用ExplainMemberNodes、ExplainNode和ExplainCustomChildren函数进行处理。最后若有子计划则递归遍历subPlan。

详细打印信息可通过上面图的流程框架进入每个函数深入阅读理解。

GreenPlum的GPCC可以动态以树的形式打印执行计划,显示执行计划执行的进度。理解explain如何打印执行计划及这些节点怎么遍历后,可以更加方便理解推测GPCC打印执行计划的机制(因为gpcc还未开源)。

同时执行计划的执行时间从什么时候开始,到什么时候结束,也可以通过函数ExplainOnePlan看INSTR_TIME_SET_CURRENT(starttime);类似的时间。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
存储 SQL 关系型数据库
PostgreSQL技术大讲堂 - 第29讲:执行计划与成本估算
从零开始学PostgreSQL技术大讲堂 - 第29讲:执行计划与成本估算
179 1
|
关系型数据库 PostgreSQL 索引
PostgreSQL执行计划数据结构
PostgreSQL执行计划数据结构
80 0
|
SQL Cloud Native 关系型数据库
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版功能演示(上)——六、查看分析执行计划
《阿里云认证的解析与实战-数据仓库ACP认证》——云原生数据仓库AnalyticDB PostgreSQL版功能演示(上)——六、查看分析执行计划
|
关系型数据库 PostgreSQL
PostgreSQL 性能优化: EXPLAIN 使用教程
PostgreSQL为每个收到的查询产生一个查询计划。选择正确的计划来匹配查询结构和数据的属性对于好的性能来说绝对是最关键的,因此系统包含了一个复杂的规划器来尝试选择好的计划。你可以使用EXPLAIN命令察看规划器为任何查询生成的查询计划。
203 0
|
关系型数据库 PostgreSQL 索引
PostgreSQL 性能优化: 执行计划
PostgreSQL为每个收到的查询产生一个查询计划。查询计划的结构是一个计划结点的树。最底层的结点是扫描结点:它们从表中返回未经处理的行。不同的表访问模式有不同的扫描结点类型:顺序扫描、索引扫描、位图索引扫描。也还有不是表的行来源,例如VALUES子句和FROM中返回集合的函数,它们有自己的结点类型。如果查询需要连接、聚集、排序、或者在未经处理的行上的其它操作,那么就会在扫描结点之上有其它额外的结点来执行这些操作。并且,做这些操作通常都有多种方法,因此在这些位置也有可能出现不同的结点类型。
102 0
|
SQL 移动开发 关系型数据库
PostgreSQL 执行计划,成本公式解说,代价因子校准,自动跟踪SQL执行计划(三)|学习笔记
快速学习PostgreSQL 执行计划,成本公式解说,代价因子校准,自动跟踪SQL执行计划(三)
860 0
PostgreSQL 执行计划,成本公式解说,代价因子校准,自动跟踪SQL执行计划(三)|学习笔记
|
SQL 存储 缓存
因接触partition by而对PostgreSQL explain有了一个小小的认识
因接触partition by而对PostgreSQL explain有了一个小小的认识
330 0
因接触partition by而对PostgreSQL explain有了一个小小的认识
|
SQL 关系型数据库
PostgreSQL citus, Greenplum 分布式执行计划 DEBUG
标签 PostgreSQL , citus , sharding , Greenplum , explain , debug 背景 开启DEBUG,可以观察citus, Greenplum的SQL分布式执行计划,下发情况,主节点,数据节点交互情况。
1637 0
|
关系型数据库 SQL MySQL
如何在线应对SQL语句执行计划?解读RDS MySQL 8.0之SQL Outline功能
这里边有几个因素和场景,比如:随着表数据量的变化,以及统计信息的自动收集,CBO optimizer 计算得到了一个cost 更低的 plan, 又或者 表结构发生了变化,增加和删减了某些索引,或者在实例升级迁移等过程中,MySQL 自身优化器行为和算法发生了变化等。
1568 0