MySQL-MVCC 实现乐观锁的一种方式

什么是MVCC

MVCC-多版本的并发控制协议 , MVCC是通过保存数据在某个事件点的快照来实现的
优点是 : 读不加锁 , 读写不冲突

MVCC原理

每开启一个新的事务,事务的ID就会自动递增,也就是为事务分配单向增长的时间戳,为每一个修改保存修改之前的版本(相当于快照),读操作只读该事务开始前的数据库的快照,这样读操作就不用阻塞写操作,写操作不用阻塞读操作的同时,避免了脏读和不可重复读

  • 脏读 : 读取未提交数据 , A事务读取B事务未提交的数据,如果此时B事务发生回滚,A事务读取的数据称为脏数据

  • 不可重复读 :前后多次读取,数据内容不一致,A事务首先读取一条数据,然后执行逻辑的时候,事务B将这条数据改变了,事务A再次读取的时候发现前后数据不匹配,主要是针对update或delete

  • 幻读 :事务A首先根据条件索引得到N条数据,然后事务B改变了这N条数据之外的M条或者增添了M条符合事务A搜索条件的数据,导致事务A再次搜索发现有N+M条数据了,就产生了幻读,主要针对insert

Innodb的最基本行记录(row)中包含一些额外的存储信息:DATA_TRX_ID,DATA_ROLL_PTR,DB_ROW_IDÿ

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值