MVCC 实现原理¶
一、是什么¶
多版本并发控制,读写不阻塞。
二、组成¶
- 隐藏字段(trx_id、roll_ptr)。
- undo log(版本链)。
- ReadView。
三、版本链¶
每行数据有 roll_ptr,指向上一个版本。
四、ReadView¶
事务开始时生成:
五、可见性判断¶
沿版本链找:
- trx_id == creator:可见。
- trx_id < min:可见。
- trx_id >= max:不可见。
- 在 m_ids 里:不可见。
找到第一个可见的版本。
六、RC vs RR¶
- RC:每次 select 新 ReadView。
- RR:事务开始时一个 ReadView。
七、好处¶
- 读写不阻塞。
- 提高并发。
一句话
MVCC = undo 版本链 + ReadView 判断可见性。