1、首先了解undo log的版本链模式
我们每条数据其实都有两个隐藏字段,一个是trx_id,一个是roll_pointer,这个trx_id就是最近一次更新这条数据的事务id,roll_pointer就是指向你了你更新这个事务之前生成的undo log
多个事务串行执行的时候,每个人修改了一行数据,都会更新隐藏字段txr_id和roll_pointer,同时之前多个数据快照对应的undo log,会通过roll_pinter指针串联起来,形成一个重要的版本链!
2、ReadView机制
这个ReadView呢,简单来说,就是你执行一个事务的时候,就给你生成一个ReadView,里面比较关键的东西有4个
一个是m_ids,这个就是说此时有哪些事务在MySQL里执行还没提交的;
一个是min_trx_id,就是m_ids里最小的值;
一个是max_trx_id,这是说mysql下一个要生成的事务id,就是最大事务id;
一个是creator_trx_id,就是你这个事务的id