2026-06-16 | database · kernel | #postgresql #pg-kernel #executor #volcano-model #expression-evaluation #hash-join #tupleslot #wait-event #pg-blocking-pids #explain-analyze
拆解 PostgreSQL 执行器的火山模型(ExecInitNode→ExecProcNode→ExecEndNode)、Hash Join 内存化实现、EEO 表达式求值的 opcode 编译与解释执行机制、TupleTableSlot 的三种数据承载方式(virtual/heap/minimal)。附带查询 hang 住的完整诊断路径:pg_stat_activity 的 wait_event + pg_blocking_pids() 追踪锁等待链 + EXPLAIN ANALYZE 计划行数与实际行数差异定位。
2026-06-16 | database · kernel | #postgresql #pg-kernel #extensions #fdw #foreign-data-wrapper #postgres-fdw #hook #pushdown #planner #executor
拆解 PostgreSQL 扩展系统的两种核心机制:全局 hook 机制全景(planner_hook、ExecutorStart_hook、ProcessUtility_hook 等覆盖七个子系统)和 FDW(Foreign Data Wrapper)的 FdwRoutine 回调接口。重点分析 postgres_fdw 的 pushdown 机制——哪些 WHERE/ORDER BY/LIMIT 能推到远端执行、哪些被留在本地——以及扩展如何通过 GetForeignRelSize→GetForeignPaths→GetForeignPlan 三个回调影响 planner 的代价估算和路径选择。