Skip to content

五、MVCC、Vacuum 与膨胀 ​

本章是理解 PostgreSQL 并发、维护与容量的核心。PostgreSQL 用**多版本并发控制(Multi-Version Concurrency Control,MVCC)**实现“读不阻塞写、写不阻塞读”,代价是更新/删除会遗留旧版本(死元组),必须由 VACUUM 回收。围绕这一机制,本章讲清可见性、死元组产生、清理职责、冻结与事务 ID 回卷,以及膨胀的识别与治理。

本章目录 ​

  1. 元组头、事务 ID 与可见性基础
  2. 快照与可见性规则
  3. 死元组、HOT 更新与 HOT 链
  4. VACUUM、ANALYZE 与 Autovacuum
  5. 冻结、relfrozenxid 与 XID 回卷风险
  6. 表与索引膨胀的识别与治理

学习目标 ​

  • 说清元组头中 xmin、xmax、ctid 的含义与可见性判定逻辑
  • 理解快照如何决定“一条元组对某事务是否可见”
  • 区分 VACUUM、VACUUM FULL、ANALYZE 与 Autovacuum 的职责与代价
  • 理解冻结与 relfrozenxid,识别并规避 XID 回卷风险
  • 用观测视图量化膨胀,并选择安全的治理手段

依赖与前置 ​

版本差异入口 ​

  • PostgreSQL 各版本持续增强 Autovacuum 与冻结(如可见性映射的全冻结位、并行 Vacuum、VACUUM 的各类选项);具体默认值与选项以目标版本 \h VACUUM 和官方文档为准,正文逐篇标注。

相关主题 ​

ICP 备案号待补充 · Gitee 主页