MVCC小结

版本链

事务中进行更新操作,都会被记录在undo日志中。记录的内容除了id之外还有事务id和下一条记录的指针等。
在这里插入图片描述

READ COMMITTED —— 每次读取数据前都生成一个ReadView

隔离级别为READ COMMITTED的事务,每次查询select操作时,会生成一个视图,生成视图的时候会判断目前哪些事务还处于活跃状态,即未提交,这个会保存在一个列表中,然后从版本链中从上至下找到第一条不在这个列表里的记录,即最后一条已经提交的记录。

REPEATABLE READ —— 在第一次读取数据时生成一个ReadView

隔离级别为REPEATABLE READ 的事务,只会在第一次执行查询语句的时候生成一个视图,之后就不会重复生成了。

小结

所谓的MVCC(Multi-Version Concurrency Control ,多版本并发控制)指的就是在使用READ COMMITTDREPEATABLE READ这两种隔离级别的事务在执行普通的SEELCT操作时访问记录的版本链的过程,这样子可以使不同事务的读-写写-读操作并发执行,从而提升系统性能。READ COMMITTDREPEATABLE READ这两个隔离级别的一个很大不同就是:生成ReadView的时机不同,READ COMMITTD在每一次进行普通SELECT操作前都会生成一个ReadView,而REPEATABLE READ只在第一次进行普通SELECT操作前生成一个ReadView,之后的查询操作都重复使用这个ReadView就好了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值