多版本并发控制(MVCC)是现在数据库领域内最主流的并发控制逻辑。
多版本并发控制有很多方面来讲,比如版本并发控制协议、版本垃圾回收、版本存储、版本索引等等。本节我们简单讲一下版本控制协议。
基于时间戳的多版本控制协议:
基于两阶段加锁的多版本控制协议:
多版本并发控制(MVCC)是一种什么类别的隔离机制?很容易想到的就是有序化,将并发事务通过锁或者时间戳进行编排,但其实 MVCC 是一种快照隔离。
这里引用 CMU 的 15-721 中的一个示例来进行说明,棋盘上有黑子和白子,如果事务 T1 是将白子变成黑子,事务 T2 是将黑子变成白子。如果按照 MVCC 的设计,棋盘上的颜色会反转,原来的白子变成黑子,原来的黑子变成白子。但如果是按照有序化设计,棋盘上最后会全是黑子或者全是白子,这取决于事务 T1 和 T2 的执行顺序。