分享下MVCC原理,目的:在不加锁的条件下也可以提高并发事务的读写性能,加锁机制可以控制并发但是开销很大。场合:用于读已提交和可重复读。实现:一般在末尾添加两个隐藏列,一个是事务id(DB_RTX_id),另外一个是回滚指针(DB_ROLL_PTR),只有DML操作才会生成事务ID.(1)当有DML操作时,将插入新数据,将旧数据放在undo日志中,且回滚指针指向旧数据(2)时间序列上第一个select会建立一致性视图read_view,由未提交事务id数组+最大事务id组成,通过比对链就可以确定数据(3)比对链规则:DB_RTX_id小于min_id已提交-可见;DB_RTX_id大于max_id未开始事务,不可见;DB_RTX_id在min_id和max_id之间,分两种,若row在数组中,未提交-不可见,不在数组中,已提交-可见。这块有一个视频:https://www.bilibili.com/video/BV1YJ411J7vb?from=search&seid=5325901820680320807
点赞

相关推荐

2024-12-31 17:16
北京邮电大学 golang
点赞 评论 收藏
分享
牛客网
牛客企业服务