mvcc 可重复读实现原理 (rr mvcc)
2021-03-25 11:34:12 5 举报
rr mvcc
作者其他创作
大纲/内容
end
no(说明是开启该ReadView之外的事务修改过的,可以读)
根据DB_ROLL_PTR取出数据历史版本
no
yes(说明是后来的事务修改的,不能读)
返回该数据行数据
start(同一事务下,每次读取都用的同一个ReadView)
yes(说明是自己修改过的)
它是rr,在第一次开启readview,以后一直都用这个readview。比如你开启了事务A,事务A一直在读,没提交;但是,同时也有其他线程事务修改了数据,就会产生行数据的事务id 大于 m_ids里的最大事务id。也就是这种情况。
行数据事务ID是否大于等于最大事务ID
行数据事务ID是否在ReadView事务ID集合中
ReadView属性说明
yes(说明这个数据是之前事务修改过的,可以读)
行数据事务ID是否等于当前事务ID
m_ids:此时有哪些事务在MySQL里执行还没提交的 ( 活跃事务 )min_trx_id:m_ids里最小的值max_trx_id:mysql下一个要生成的事务id,就是最大事务idcreator_trx_id:你这个事务的id
读取行数据里面的事务Id(DB_TRX_ID)
行数据事务ID是否小于最小事务ID
0 条评论
下一页