PostgreSQL 为开发人员提供了丰富的工具来管理对数据的并发访问。在内部,数据一致性是通过使用多版本模型(多版本并发控制,MVCC)来维护的。这意味着每个 SQL 语句看到的是一段时间之前的数据快照(一个数据库版本),而与底层数据的当前状态无关。这可以防止语句查看由对相同数据行执行更新的并发事务产生的不一致数据,从而为每个数据库会话提供事务隔离。MVCC通过避免传统数据库系统的锁定方法,最大程度地减少了锁争用,以便在多用户环境中实现合理的性能。
使用MVCC并发控制模型而不是锁定的主要优点是,在MVCC中,为查询(读取)数据获取的锁与为写入数据获取的锁不冲突,因此读取永远不会阻止写入,而写入永远不会阻止读取。PostgreSQL 通过使用创新的可序列化快照隔离(SSI)级别来维护这一保证,即使在提供最严格的事务隔离级别时也是如此。
对于通常不需要完全事务隔离并且更喜欢显式管理特定冲突点的应用程序,PostgreSQL 中还提供了表级和行级锁定工具。但是,正确使用MVCC通常会比锁提供更好的性能。此外,应用程序定义的咨询锁提供了一种用于获取不与单个事务绑定的锁的机制。
如果您发现文档中有任何不正确、与您使用特定功能的体验不符或需要进一步澄清的地方,请使用此表单报告文档问题。