多版本并行控制(Multi-Version Concurrency Control (MVCC)) 是用于提高数据库在一个多用户环境下性能的高级技术。 Vadim Mikheev(<[email protected]>)为 Postgres 提供了MVCC的实现。
与其他使用锁来进行并行控制的数据库系统不同, Postgres 利用多版本模型来维护数据的一致性。 这就意味着当检索数据库时,每个事务都看到一个 数据的一段时间前的快照 ( 数据库版本) ,而不管正在处理的数据当前的状态。这样,如果对每个数据库会话进行 事务隔离, 就可以避免一个事务看到因为其它并行的事务更新 同一行数据而导致的不连贯的数据。
多版本和锁定模型的主要区别是在 MVCC 里, 对检索(读)数据的锁要求与写数据的锁要求不冲突, 所以读不会阻塞写,而写也从不阻塞读。