幻读

作者: lsh的学习笔记 | 来源:发表于2020-05-06 18:35 被阅读0次

什么是幻读?

同一事务中,连续执行两次同样的SQL语句可能导致不同的结果,第二次的SQL语句可能会返回之前不存在

举例:

-- 幻读:第一次执行可能返回2条结果,第二次执行可能返回4条结果;
select * from t where a > 2;

有什么影响?

违反了事务的隔离性。当前事务能看到其他事务的结果。

如何解决?

Oracle

把事务隔离级别调到Serializable级别,即串行执行。

但是串行化的性能很差。

MySQL

把事务隔离级别调到Repeatable Read级别(默认),即可重复读,InnoDB引擎采用Next-Key Locking机制来避免幻读。

比如上面的SQL,对(2,+∞)这个范围排他X锁,在这个范围内的插入都是不允许的,从而避免幻读。

相关文章

  • MySQL - 幻读 、间隙锁

    select for update 加写锁。事物提交才释放 什么是幻读? 产生幻读的场景: 幻读指的是一个事务在前...

  • 系统原理-MVCC

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

  • 丁奇-MySQL实战读书笔记20

    幻读是什么,幻读有什么问题? 什么是幻读?幻读指的是一个事务在前后两次查询同一个范围的时候,后一次查询看到了前一次...

  • 数据库事务隔离级别

    脏读 不可重复读 幻读

  • Mysql中事物隔离问题

    脏读:当前事物可以查看别的事物未提交的数据幻读:幻读与不可重复读很容易让人搞混,幻读的侧重点在于新增和删除。表示在...

  • 幻读

    什么是幻读? 在同一事务中,连续执行两次同样的SQL语句可能导致不同的结果,第二次的SQL语句可能会返回之前不存在...

  • 美团三面:一直追问我, MySQL 幻读被彻底解决了吗?

    什么是幻读? 首先来看看 MySQL 文档是怎么定义幻读(Phantom Read)的: The so-calle...

  • mysql 幻读的详解

    幻读 首先我们要搞明白何谓幻读,目前网上的众多解释幻读的博文个人感觉仔细设想一下就能找出推翻的例子,就像博文把 非...

  • mysql-幻读,间隙锁

    1.什么是幻读幻读,并不是说两次读取获取的结果集不同,幻读侧重的方面是某一次的 select 操作得到的结果所表征...

  • 程序员之MySQL

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

网友评论

      本文标题:幻读

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