13.1. Introduction

PostgreSQL 为开发人员提供了一套丰富的工具来 Management 对数据的并发访问。在内部,通过使用多版本模型(Multiversion Concurrency Control,MVCC)来维护数据一致性。这意味着每个 SQL 语句都可以像以前一样看到数据快照(数据库版本),而不管底层数据的当前状态如何。这样可以防止语句查看由并发事务对同一数据行执行更新而产生的不一致数据,从而为每个数据库会话提供“事务隔离”。 MVCC 通过避免传统数据库系统的锁定方法,将锁定争用最小化,以便在多用户环境中实现合理的性能。

使用并发控制的 MVCC 模型而不是锁定的主要优点是,在 MVCC 中,为查询(读取)数据而获取的锁与为写入数据而获取的锁不冲突,因此读取永远不会阻止写入,而写入永远不会阻止读取。即使通过使用创新的“可序列化快照隔离”(SSI)级提供最严格的事务隔离级别,PostgreSQL 仍会保持这种保证。

表级和行级锁定功能在 PostgreSQL 中也适用于通常不需要完全事务隔离并且希望显式 Management 特定冲突点的应用程序。但是,正确使用 MVCC 通常会提供比锁更好的性能。另外,应用程序定义的咨询锁提供了一种机制,用于获取未绑定到单个事务的锁。