PostgreSQL 的 MVCC(多版本并发控制,Multi-Version Concurrency Control) 是其核心架构之一。它的主要目的是在保证数据库隔离性的同时,实现“读不阻塞写,写不阻塞读”,从而大幅提升高并发环境下的性能。 与 MySQL (InnoDB) 将旧版本数据存储在 Undo Log 中不同,PostgreSQL 将新旧版本的数据统一存放在数据表文件(Heap 表)中。 以下是 PostgreSQL 实现 MVCC 的核心机制和原理剖析: --- 1. 核心基础:隐藏的系统字段(System Columns) PostgreSQL 表中的每一行数据(在 PG 中称为 Tuple 或元组)除了包含用户定义的数据外,还包含几个隐藏的系统字段。实现 MVCC 最关键的是以下两个: :创建(Insert)该行版本的事务 ID(Transaction ID,简称 XID)。 :删除或更新(Delete/Update)该行版本的事务 ID。如果该行尚未被删除或更新,此值为 0。 (注:还有 和 用于标识同一个事务内不同 SQL 语句的顺序,这里为了简化先忽略它...