Chapter 9. 多版本并行控制

Table of Contents
9.1. 介绍
9.2. 事务隔离
9.3. 读已提交隔离级别
9.4. 可串行化隔离级别
9.5. 应用层的数据完整性检查
9.6. 锁和表
9.6.1. 表级锁
9.6.2. 行级锁
9.7. 锁和索引

多版本并行控制(Multi-Version Concurrency Control (MVCC)) 是用于提高数据库在一个多用户环境下性能的高级技术。 Vadim Mikheev()为 Postgres 提供了MVCC的实现。

9.1. 介绍

与其他使用锁来进行并行控制的数据库系统不同, Postgres 利用多版本模型来维护数据的一致性。 这就意味着当检索数据库时,每个事务都看到一个 数据的一段时间前的快照 ( 数据库版本) ,而不管正在处理的数据当前的状态。这样,如果对每个数据库会话进行 事务隔离, 就可以避免一个事务看到因为其它并行的事务更新 同一行数据而导致的不连贯的数据。

多版本和锁定模型的主要区别是在 MVCC 里, 对检索(读)数据的锁要求与写数据的锁要求不冲突, 所以读不会阻塞写,而写也从不阻塞读。