JAVA面试准备之数据库 锁模块(5)InnoDB可重复读隔离级别下如何避免幻读

InnoDB可重复读隔离级别下如何避免幻读?

表象:快照读(非堵塞读)

    在Repeatable-read隔离级别下,如果先在别的事务操作数据之前,创建了快照读,不管别的事务怎么操作数据,当前事务再次使用快照读时,查到的依旧是老版本的数据。

内在:next-key锁(行锁+gap锁)

    真正防止幻读发生是因为事务在Repeatable-read隔离级别以上(包括)对数据加了next-key锁。next-key锁由行锁和gap锁组成。

 

next-key锁

由行锁和gap锁组成

行锁就是对行记录加的锁。

Gap锁

1.目的是防止同一事务的两次当前读出现幻读的情况。

2.Repeatable-read级别以上支持Gap

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值