mysql 多版本并发控制mvcc

  • 行级锁的一个变种
  • 避免了加锁,开销低
  • 非阻塞读操作,写操作是行级
  • 原理:使用数据在某个时间点的快照实现,不同事务在同一个时间可以看到同一个表中的不同数据。
  • 分类:乐观,悲观
  • 在一行中存储更多数据,检查工作也要增加,处理一些额外的内部操作。
  • 适用:rr,rc级别。ur会读到最新版本,sz会读取会锁定返回的每一行。

在这里插入图片描述

InnoDB通过为每个事务在启动时分配一个事务ID来实现MVCC。该ID在事务(A)首次读取任
何数据时分配。在该事务中修改记录时,将向Undo日志写入一条说明如何恢复该更改的
Undo记录,并且事务的回滚指针指向该Undo日志记录。这就是事务如何在需要时执行回
滚的方法。

当不同的会话(事务B)读取聚簇主键索引记录时,InnoDB会将该记录的事务ID与该会话的读取视
图进行比较。如果当前状态下的记录不应可见(更改它的事务尚未提交),那么Undo日
志记录将被跟踪并应用,直到会话达到一个符合可见条件的事务ID。这个过程可以一直
循环到完全删除这一行的Undo记录,然后向读取视图发出这一行不存在的信号。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值