Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

13.1. 简介 #

PostgreSQL为开发者提供了丰富的工具来管理对数据的并发访问。在内部,使用多版本模型(多版本并发控制)来维护数据一致性,MVCC)。这意味着每个 SQL 语句都会看到一个数据快照(数据库版本),这个快照是过去某个时间点的,而不管底层数据处于什么当前状态。这会阻止语句查看不一致的数据,这些数据是由并发事务针对相同的数据行执行更新产生的,从而为每个数据库会话提供事务隔离MVCC通过规避传统数据库系统的锁定方法,在多用户环境中允许合理的性能,以此最大程度地减少锁定争用。

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

表级和行级锁定工具也可在PostgreSQL 中使用,适用于通常不需要完全事务隔离并倾向于显式管理特定冲突点的应用程序。但是,正确使用MVCC通常会提供比锁定更好的性能。此外,应用程序定义的建议锁定提供了一种获取不与单个事务绑定的锁定的机制。