MVCC概念
MVCC
全称叫做Multiversion Concurrency Control
,多版本并发控制。MVCC
的出现主要是为了提升数据库并发性能,用较好的方式处理事务并发的读写冲突
,避免了加锁操作,降低性能开销,在有读写冲突
时,能够做到非阻塞并发读。
- MVCC可以通过乐观锁的方式,在可重复读隔离级别下来解决不可重复读和幻读的问题。
MVCC原理
在MVCC机制中,多个事务对同一条记录做修改,会产生多个历史快照,这些历史快照保存在undo log
里,当一个事务对该记录进行查询时,MVCC会通过ReadView解决行的可见性问题。
ReadView是事务在使用MVCC机制进行快照读时产生的读视图。
ReadView
ReadView
字段说明:
字段 | 字段说明 |
---|---|
creator_trx_id |
创建这个 Read View 的事务 ID |
trx_ids |
生成ReadView时当前系统中活跃的 事务id列表 |
up_limit_id |
活跃的事务中最小的事务 ID |
low_limit_id |
系统最大的事务ID值(注意,不是活跃事务中的最大值) |