02 经典的执行器
关闭enable_opfusion,简单insert的执行计划是这样的: ’ fill=‘%23FFFFFF’%3E%3Crect x=‘249’ y=‘126’ width=‘1’ height=‘1’%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
在这种执行流程中Portal是执行SQL语句的载体,每一条SQL对应唯一的Portal,不同的查询类型对应的Portal类型也有区别。
typedef enum PortalStrategy {
PORTAL_ONE_SELECT, // SQL语句包含单一的SELECT查询
PORTAL_ONE_RETURNING, // INSERT/UPDATE/DELETE语句包含Returning
PORTAL_ONE_MOD_WITH, // 查询语句包含With
PORTAL_UTIL_SELECT, // 工具类型查询语句,如explain
PORTAL_MULTI_QUERY // 所有其他类型查询语句
} PortalStrategy;
Portal的生命周期管理在exec_simple_query函数中实现,该函数负责Portal创建、执行和清

文章详细介绍了PostgreSQL执行SQL语句时的Portal机制,包括Portal的生命周期管理、不同类型的PortalStrategy以及执行流程中的关键函数,如PortalStart、PortalRun和PortalDrop。特别提到了在关闭enable_opfusion的情况下,简单INSERT语句的执行计划,并指出PortalRunMulti是处理多查询语句的核心部分。
最低0.47元/天 解锁文章
1269

被折叠的 条评论
为什么被折叠?



