1,原理介绍
数据多版本(MVCC)是MySQL实现高性能的一个主要的一个主要方式,通过对普通的选择不加锁,直接利用MVCC读取指版本的值,避免了对数据重复加锁的过程.InnoDB支持MVCC多版本,其中钢筋混凝土和RR隔离级别是利用一致的阅读观点方式支持的,即在某个时刻对事物系统打快照记下所有活跃读写事务ID,之后读操作根据事务ID与快照中的事务ID进行比较,判断可见性。
2, InnoDB数据行结构
行结构中,除了用户定义的列外还有3个系统列:DATA_ROW_ID, DATA_TRX_ID, DATA_ROLL_PTR,如果表没有定义主键那么DATA_ROW_ID作为主键列,否则行结构中没有DATA_ROW_ID列。其中:
<代码> DATA_TRX_ID:修改该行数据的事务的ID DATA_ROLL_PTR:指向该行回滚段的指针。代码>
整个MVCC实现,关键靠这2个字段来完成。
3, read视图原理流程
InnoDB MVCC实现原理及源码解析