Skip to content

Architecture

https://medium.com/@reetesh043/ee5b24b52a30

PG 内核全景:

  • 控制面:查询分析 => 优化器 => 执行器
  • 数据面:访问方法(Heap/Index)=> Buffer Cache => 物理磁盘
  • 事务面Lock Manager => WAL/CLOG => MVCC (Visible check)
  • 元数据面Syscache (系统表缓存) => Relcache (表定义缓存)
  • 运行面MemoryContext => 信号量/共享内存 > 辅助进程

数据面 (Data Plane):物理实体

数据面负责处理所有与字节、块、文件相关的物理操作,核心目标是:极速读写、持久存储

  • 存储引擎(Storage Engine):管理数据在磁盘上的物理布局(Heap, B-Tree)
  • 缓冲池(Shared Buffers):数据在内存中的镜像,是数据流转的中转站
  • 物理辅助(FSM/VM):空闲空间映射(FSM)和可见性映射(VM),它们是数据页的“物理索引”
  • 日志实体(WAL Segments):数据变化的物理流水账

控制面 (Control Plane):逻辑流程

控制面负责处理所有与规则、状态、决策、同步相关的逻辑操作,包含元数据、事务处理,以及支撑这些逻辑运行的底层基础设施。

A. 决策与规则 (Decision & Schema)

  • 查询解析与优化(Optimizer):基于元数据和统计信息,制定数据流转的最优路径
  • 安全与权限:控制谁能接触数据面

B. 状态与并发 (State & Concurrency)

  • 事务管理(XID/CLOG):维护事务的生命周期,标记数据的逻辑版本
  • 多版本控制(MVCC):逻辑上的“时空分割”,确保不同事务看到不同的数据快照

C. 运行支撑与底层同步(Runtime Infrastructure)

  • 锁管理器(Lock Manager)重型锁确保业务逻辑不冲突(如:禁止在插入时删表)
  • 同步原语(LWLocks/Spinlocks)轻量级锁确保控制面在修改共享状态(如修改事务号、分配内存)时的物理原子性
  • 内存上下文(MemoryContext):确保控制面在运行过程中,内存资源的分配和回收是合理的、不泄露的