我理解的mvcc

本文阐述了MVCC机制如何通过undolog实现非阻塞读写,涉及快照读、事务标识和读一致性级别如可重复读与读已提交。
摘要由CSDN通过智能技术生成

mvcc是一种通过记录和遍历undolog来实现非阻塞读写并发的多版本并发控制机制。

查询数据快照读的时候会生产一个read_view,保存了当前事务id(creator_trx_id),活跃事务id列表(trx_ids_list),最小事务id(min_trx_id),下一个事务id(max_trx_id,最大活跃id+1)

版本数据和当前数据都有隐藏列:当前版本事务id(trx_id),主键id(row_id),回滚指针(roll_prt),每个版本指针相连

每次更新的时候都会写一个undo_log版本记录,读取数据的时候通过遍历版本链的版本号去匹配read_view找到正确的当前版本,当版本链的事务id小于最小事务id,或者等于当前事务id的时候,读取出来返回数据。

可重复读:read_view第一次读创建一次,都是一样的,不管提交与否

读已提交:每次读都会创建一个新的read_view,每次都不一样,所以能读取到已经提交的数据

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值