刷脉脉,发现一个帖子讨论幻读问题:

https://maimai.cn/web/gossip_detail?src=app&webid=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlZ2lkIjoiN2JmMjA4ZDZjNzU0MTFlYWExOTk4MDE4NDRlNTAxOTAiLCJ1IjoyMjM0MjgzMTksImlkIjoyNjc0NDU3OH0.yvtEe5Z1vjtmPE5dBwXVqD-pMWBE2--jDQuRARcWArI

固做一下实验,演示下MySQL默认隔离级别REPEATABLE-READ并没有解决幻读问题

幻读演示

MySQL默认隔离级别REPEATABLE-READ(可重复读)会话一会话二

MySQL [test]> select * from t1;

+------+

| id |

+------+

| 1 |

| 2 |

| 3 |

| 4 |

+------+

4 rows in set (0.000 sec)MySQL [test]> select * from t1;

+------+

| id |

+------+

| 1 |

| 2 |

| 3 |

| 4 |

+------+

4 rows in set (0.000 sec)

MySQL [test]> begin;

Query OK, 0 rows affected (0.000 sec)

注:开启事务一MySQL [test]> begin;

Query OK, 0 rows affected (0.000 sec)

注:开启事务二

MySQL [test]> insert into t1 values(5);

Query OK, 1 row affected (0.000 sec)

MySQL [test]> select * from t1;

+------+

| id |

+------+

| 1 |

| 2 |

| 3 |

| 4 |

| 5 |

+------+

5 rows in set (0.000 sec)

注:插入一条数据5MySQL [test]> select * from t1;

+------+

| id |

+------+

| 1 |

| 2 |

| 3 |

| 4 |

+------+

4 rows in set (0.000 sec)

注:因会话一未提交,所以在会话二事务里是看不见更改后的结果的

MySQL [test]> commit;

Query OK, 0 rows affected (0.002 sec)

注:会话一执行事务提交

MySQL [test]> select * from t1;

+------+

| id |

+------+

| 1 |

| 2 |

| 3 |

| 4 |

+------+

4 rows in set (0.000 sec)

MySQL [test]> update t1 set id = id+10;

Query OK, 5 rows affected (0.001 sec)

Rows matched: 5 Changed: 5

Warnings: 0

注:执行全表更新,id+10

MySQL [test]> select * from t1;

+------+

| id |

+------+

| 11 |

| 12 |

| 13 |

| 14 |

| 15 |

+------+

5 rows in set (0.000 sec)

注:当再次查看时,此时发现有5条数据被更改,产生幻读

MySQL [test]> select version();

+-----------+

| version() |

+-----------+

| 8.0.21 |

+-----------+

1 row in set (0.000 sec)

在MySQL默认隔离级Repeatable Read下,刚才的操作,在会话二未提交的事务里,

会莫名其妙地看到第5条数据,这种现象称为幻读。

固只能通过select ... for update才能避免幻读。

mysql 并没有幻读_MySQL默认隔离级别REPEATABLE-READ并没有解决幻读问题相关推荐

  1. mysql 脏读 不可重复读 幻读_mysql事务隔离级别/脏读/不可重复读/幻读详解

    一.四种事务隔离级别 1.1read uncommitted 读未提交 即:事务A可以读取到事务B已修改但未提交的数据. 除非是文章阅读量,每次+1这种无关痛痒的场景,一般业务系统没有人会使用该事务隔 ...

  2. Mysql默认隔离级别为什么是可重复读?

    知识点总结 1.数据库默认隔离级别: mysql -可重复读: oracle,postgres -已提交读 2.mysql binlog的格式三种:statement,row,mixed 3.为什么m ...

  3. mysql ansi sql标准_Mysql数据库隔离级别(ANSI SQL92规范,行锁,间隙锁)

    一. 什么是数据库隔离级别? ANSI(美国国家标准学会:AMERICAN NATIONAL STANDARDS INSTITUTE)在多个事务并发的时候能够正确的处理数据所定义的规范.事务隔离级别越 ...

  4. mysql 事务隔离级别实现原理_MySQL事务隔离级别和实现原理 - 米扑博客

    开发中经常提到数据库的事务,那你知道数据库还有事务隔离的说法吗, 事务隔离还有隔离级别,那什么是事务隔离,隔离级别又是什么呢? MySQL 事务 本文所说的 MySQL 事务都是指在 InnoDB 引 ...

  5. [转]为什么mysql默认隔离级别设置为可重复读

    一般的DBMS系统,默认都会使用读提交(Read-Comitted,RC)作为默认隔离级别,如Oracle.SQLServer等,而MySQL却使用可重复读(Read-Repeatable,RR).要 ...

  6. mysql 事务隔离规范_MySQL事务隔离级别以及脏读、幻读、不可重复读示例

    事务的隔离性 MySQL是一个客户端/服务器架构的软件,对于同一个服务器来说,可以有若干个客户端与之连接,每个客户端与服务器连接上之后,就可以称之为一个会话(Session).每个客户端都可以在自己的 ...

  7. MySQL不可读举例_MySQL事务隔离级别与相关示例(脏读、不可重复读、幻读)

    目录 MySQL8中隔离级别的变量跟之前的版本不一样,之前是tx_isolation,MySQL8改成了transaction_isolation.查看当前隔离级别的命令是 mysql> sel ...

  8. mysql rr解决幻读吗_mysql rr隔离级别解决幻读了吗

    以下内容全部基于innodb. 虽然下面有很多概念很浅显,但还是要解释一下 什么是幻读? 当一个事务在多次查询中,发现了一行不是在当前事务中添加的数据.出现这种问题就叫做幻读. 关于四种隔离级别 未提 ...

  9. mysql 默认事务隔离级别_MySQL 事务隔离级别详解

    个人公众号『码农札记』,欢迎关注,查看更多精彩文章. 简介: MySQL的事务隔离级别一共有四个,分别是读未提交.读已提交.可重复读以及可串行化. 四个特性ACID 原子性 (Atomicity) 事 ...

最新文章

  1. 中兴高达和中兴啥关系_41家通信传输设备公司研发投入排名:中兴通讯、烽火通信最敢投...
  2. AutoCAD如何输入文字
  3. pycharm debug 断点调试
  4. SAP CRM产品主数据应用里value node和model node的转换
  5. python安装matlabb库_Python调用MATLAB的方法(mlab接口库)(未总结)-Go语言中文社区...
  6. 计算机网络:如何传输一条数据(详解)
  7. Linux 下wifi 驱动开发(二)—— WiFi模块浅析
  8. TIOBE 11 月编程语言排行榜:C 逼近 Java,Swift 进入 Top 10
  9. OpenFlow网络中处理正常流量的工作流程
  10. 网页编辑PHP变量,编辑文件中的php代码和变量
  11. 蓝桥杯 BASIC-13 基础练习 数列排序
  12. rabbitMq多个队列多种任务同时监听
  13. opencv.js调用摄像头(Electron环境)
  14. 风云2号卫星云图_中国为什么要发这么多卫星?答案没有出乎意料
  15. php codesniffer 安装,phpstorm安装PHP_CodeSniffer
  16. Windows8[Web应用程序项目***已配置为使用IIS。无法访问IIS元数据库,您没有足够的特权访问计算机上的IIS网站]
  17. 最凄美的爱情故事,让每对爱人更长久的文章!!
  18. 人力资源外包(HRO)服务市场现状研究分析-
  19. Android studio真机调试(用小米10s为例)
  20. MySQL数据库备份练习

热门文章

  1. RNA-seq中的基因表达量计算和表达差异分析
  2. nyoj 1237 最大岛屿【dfs】
  3. 如何获取浏览器客户端的唯一标识
  4. 【Matlab】简单控制系统建模(控制系统工具箱)
  5. 戴尔灵越5370win10+Ubuntu16双系统卸载Ubuntu
  6. 小程序怎么用css做出与文字同行靠右的引导箭头?
  7. 服务器开机以后系统丢了怎么办,电脑开机系统丢失怎么处理?
  8. python捕捉对象(异常处理)
  9. windows 10 vscode cmake ffplay.c 源码编译 2/2
  10. 特殊纸张如何设置打印格式