PostgreSQL 18 中文参考文档(未翻译部分保留英文)🌐 切换到英文原版 →

13.1. 简介 #

PostgreSQL 为开发者提供了完善的并发数据访问控制工具集。在系统底层,数据一致性通过多版本模型(多版本并发控制,Multiversion Concurrency Control,简称 MVCC)进行维护。这意味着每条 SQL 语句所感知到的是数据在某个过去时间点的一个确定快照(称为数据库版本),而完全不受底层物理数据实时并发状态的干扰。这彻底防止了并发事务在对同一数据行执行修改时让其他查询看到脏乱的半状态数据,为每个数据库会话提供了坚实的事务隔离。MVCC 通过摒弃传统数据库系统依赖的悲观重型读锁,将锁争用降至最低,从而在多用户高并发场景下保障极致性能。

采用 MVCC 模型替代传统排他锁的核心优势在于:在 MVCC 体系中,为查询(读)数据所获取的锁与为写入(修改)数据所获取的锁完全不产生冲突,因此读永远不阻塞写,写也永远不阻塞读。PostgreSQL 即使在提供最严苛的最高隔离级别时,通过运用先进的可串行化快照隔离(Serializable Snapshot Isolation,简称 SSI)算法,依然能完整保持这一“读写互不阻塞”的确定性保障。

对于那些不需要全量事务隔离、倾向于在特定冲突点显式把控流程的应用程序,PostgreSQL 同样提供了表级与行级的显式锁定设施。然而规范运用 MVCC 的吞吐性能通常显著优于传统显式锁。此外,应用级咨询锁(Advisory Locks)还提供了一种生命周期不绑定单一事务的灵活分布式锁机制。