一、read view四个字段
create_trx_id:创建该read view的事务的事务id
m_ids:创建read view时,当前数据库中的活跃事务(指启动但还没提交的事务)
min_trx_id:m_ids的最小值
max_trx_id:创建read view后,下一个事务的id

二、聚簇索引的隐藏列
trx_id:最近一次改动该聚簇索引记录的事务id
roll_pointer:指向旧版本记录,形成版本链

三、read view在mvcc中工作原理
1.如果trx_id<min_trx_id,说明已经提交了,该版本对该事务可见
2.如果trx_id>max_trx_id,说明该版本在创建read view后才生成的,所以该版本对该事务不可见
3.如果min_trx_id<trx_id<max_trx_id:在m_ids中,说明未提交,不可见;不在m_ids中,说明已提交,可见

四、四种隔离级别实现
1.读未提交:直接读取最新数据即可
2.读提交:每次读取数据都生成新的read view
3.可重复读:在启动事务时生成一个read view,整个事务期间都在用这个read view
4.串行化:通过加读写锁来避免并行访问

posted on 2024-03-11 11:46  孜孜不倦fly  阅读(3)  评论(0编辑  收藏  举报