1.介绍undo log日志版本链
2.介绍read view
3.版本比对规则解析
4.实例演示RR隔离级别下MVCC机制的应用原理
5.实例演示RC隔离级别下MVCC机制的应用原理
read view的生成
可重复读隔离级别:事务开启后,首次执行任何select时会生成当前事务的read-view,在事务结束前不会变化。
读已提交隔离级别:事务开启后,每次执行select时都会重新生成read-view。
版本链比对规则
事务里的每一条select都需要从对应版本链里的最新数据开始逐条跟read-view做比对,按照比对规则得到最终的快照结果。下面我们来看下版本链比对规则。
如果 row 的 trx_id 落在绿色部分( trx_id<min_id ),表示这个版本是已提交的事务生成的,这个数据是可见的;
如果 row 的 trx_id 落在灰色部分( trx_id>max_id ),表示这个版本是由将来启动的事务生成的
如果 row 的 trx_id 落在黄色部分(min_id <=trx_id<= max_id),那就包括两种情况