美文网首页
InnoDB幻读问题

InnoDB幻读问题

作者: 金泽祺 | 来源:发表于2019-03-25 10:41 被阅读0次

InnoDB可重复读能不能解决幻读问题?

第一种解释:不能

事务A一开始select出3条记录,ID分别是1/2/3,然后尝试插入ID为4的记录。此时正好事务B已经插入了ID为4的记录,并且提交。那么事务A的插入操作会失败,因为事务A已经读了事务B插入的ID为4的记录。这就是幻读。

第二种解析:能

InnoDB会加Netx-Key Lock,包括行锁(Record Lock)和间隙锁(Gap Lock)。间隙锁会锁住后面没有的记录,可以用来解决幻读的问题。比如事务A一开始使用select ... for update读出3条记录,此时由于间隙锁的存在,ID大于3的记录(不存在)将被锁住,那么事务B将不能插入ID为4的记录,所以就不存在幻读的问题。

相关文章

  • InnoDB幻读问题

    InnoDB可重复读能不能解决幻读问题? 第一种解释:不能 事务A一开始select出3条记录,ID分别是1/2/...

  • 程序员之MySQL

    1.MySQL解决幻读问题 MySQL InnoDB通过版本号解决事务的幻读问题a.select情况:InnoD...

  • 系统原理-MVCC

    在SQL标准中,RR是无法避免幻读问题的,但是InnoDB实现的RR避免了幻读问题。RR解决脏读、不可重复读、幻读...

  • MySQL Gap Lock引发insert语句堵住问题排查

    一、众所周知,MySQL在RR隔离级别下,会出现幻读的问题。出现幻读的前提条件:Innodb存储引擎,在RR隔离...

  • InnoDB的MVCC如何解决幻读

    InnoDB默认的隔离级别是RR(可重复读),可以解决脏读和不可重复读,但是不能解决幻读问题。 什么是幻读? 事务...

  • InnoDB如何在RR隔离级别下避免幻读

    InnoDB引擎,RR隔离级别下,并不能完全组织幻读的发生,想避免幻读,要保证gap锁是开启的,也就是innodb...

  • Mysql 并发事务带来的问题

    并发事务带来的问题 针对 mysql InnoDB 编号问题描述1脏读2不可重复读3幻读4丢失更新两个事务同时修改...

  • 2020-04-29

    重温数据库知识 知识点问题 1.什么可重复读?2.什么幻读?3.为什么innodb在RR隔离级别下能解决幻读?4....

  • MySQL间隙锁、Next-Key Lock主要知识点

    总体来说,就是MySQL innoDB引擎要在RR隔离级别之下解决幻读的问题,所以引入了间隙锁。 在进行当前读的情...

  • 数据库锁机制

    本文所有内容基于MySQL/InnoDB引擎。 并发事务解决方案 脏读、不可重复读和幻读都是数据库读一致性问题,需...

网友评论

      本文标题:InnoDB幻读问题

      本文链接:https://www.haomeiwen.com/subject/qofvvqtx.html