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