本文详解 repeatable read 可重复读 隔离级别产生的影响(幻读)

-- SERIALIZABLE serializable 序列化 ;一个个事务排成序列的形式。事务一个挨一个执行,等待前一个事务执行完,后面的事务才可以顺序执行

-- REPEATEABLE READ repeatable read 可重复读;安全上不如serializable,但是性能上比serializable强很多,但会造成幻读。隔离级别:导致幻读,同时开启两个事务,事务A和事务B,当事务A修改了数据,并且提交了,事务B此时查看不到事务A已经提交了的数据,这样保持事务B先后两次查询结果的一致性,当事务B执行update操作的时候,是可以更改事务A提交了的update,insert数据,执行过update操作之后再次select发现数据前后查询不一致!(幻读)

-- READ COMMITED read committed 提交的可读;(oracle默认)

-- READ UNCOMMITED read uncommitted 未提交的可读;(mysql 默认)别的事务可以查看的到使用 当前事务还没提交的 数据;会 脏读,幻读,不可重复读。

-- 幻读:一个事务的查询中查询两次数据,数据不一致!同时开启事务A,事务B。事务A查询一张表中的数据后,事务B修改update了事务A查询的表并做了提交,事务A再次查询这张表,发现数据的不一致!

首先说明:mysql的innodb存储引擎默认的隔离级别就是 repeatable read 可重复读

1.首先开启两个mysql连接,分别开启两个事务A,事务B;两个事务分别查询 software 表的数据,此时数据显示一致的。

1)事务A

2)事务B

3)事务A此时修改了sid = 4 的version ,select 可以查看当前修改的结果,但是还没有提交commit!

4)事务B select * from software;查看software是否有修改,发现没有被修改!

5)事务A,做commit提交;并查看select * from software;

6)事务B,在 5)中事务A做了提交之后,事务B此时是查看不到 事务A对 sid = 4 的version做出的修改的!

7)事务B,执行update software set version = version + 1; 并执行select * from software; 查看,发现出现了幻读。

sid = 4 的 version 是在事务A提交后的结果 version = 44 上进行了 + 1 的操作!

总结:幻读的实现场景:事务B先后查询software表出现的结果,与预想的update 后 version+1 的结果出现了不一致。

另外:事务A,事务B同时对software表的同一条记录做修改,后执行的事务可能会执行失败,此时可能会发生行锁的lock情况,执行不成功。后执行的事务必须等待先执行的事务先commit或者rollback,才能对这同一条要修改的记录作出修改;

如:事务A与事务B同时开启,事务A先对sid = 4 的version做修改update。事务B再修改sid的version

1>事务A,此时事务A还没有作出提交commit。

2>事务B 报错ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

发生了行锁,sid= 4 的记录被事务A锁住了,等待事务A作出提交commit或rollback超时。

3>当事务A作出了commit之后,事务B在执行update如下,就可以成功update了

MySQL可重复读应用场景_mysql-repeatable read 可重复读隔离级别-幻读实例场景相关推荐

  1. 「Mysql 事务 隔离级别」 读提交和可重复读的区别

    一.前提 首先我们应该先明确 Mysql的四种隔离级别和四种对应的现象 隔离级别: 读未提交.读已提交.可重复读.串行化 现象: 脏读.丢失修改.不可重复读.幻读 二.先说结论 读提交和可重复读都是一 ...

  2. 看完这篇文章,让你彻底理解事务隔离级别(读未提交、读已提交、可重复读、序列化)

    对于不同的事务,采用不同的隔离级别分别有不同的现象.主要有下面3种: 1.脏读(dirty read):一个事务可以读取另一个尚未提交事务的修改数据. 2.不可重复读(nonrepeatable re ...

  3. 脏读、不可重复读 共享锁、悲观锁 和 事务五种隔离级别

    http://www.cnblogs.com/adforce/archive/2011/04/20/2021929.html 一.脏读.不可重复读.幻读 1.脏读:脏读就是指当一个事务正在访问数据,并 ...

  4. MySQL 事务 :ACID、并发带来的问题、事务的隔离级别、事务的实现

    文章目录 ACID 原子性 一致性 持久性 隔离性 并发带来的隔离问题 幻读(虚读) 不可重复读 脏读 丢失更新 隔离级别 Read Uncommitted (读未提交) Read Committed ...

  5. mysql事务的acid、三种并发问题与四种隔离级别

    这里写目录标题 事物的ACID 事物并非下所引发的三种问题 以MYSQL数据库来分析四种隔离级别 mysql相关操作 Spring事物的传播行为 事物的ACID 事务是一个不可分割的数据库操作序列,是 ...

  6. mysql不可重复读是锁的表吗_Mysql事务,并发问题,锁机制-- 幻读、不可重复读(转)...

    1.什么是事务 事务是一条或多条数据库操作语句的组合,具备ACID,4个特点. 原子性:要不全部成功,要不全部撤销 隔离性:事务之间相互独立,互不干扰 一致性:数据库正确地改变状态后,数据库的一致性约 ...

  7. mysql特性举例_MySQL事务的四大特性和隔离级别

    1.事务的四大特性(ACID) #### 1.1.原子性(Atomicity) 原子性是指事务包含的一系列操作要么全部成功,要么全部回滚,不存在部分成功或者部分回滚,是一个不可分割的操作整体. 1.2 ...

  8. Mysql存储级别_mysql 存储引擎分类和事务隔离级别

    mysql 存储引擎分类 myisam和innodb的区别 1. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条S ...

  9. mysql mvcc 读写阻塞_mysql面试题MVCC原理事务隔离级别_aiailingfei的博客-CSDN博客

    原文作者:小小一只鸟 原文标题:mysql面试题MVCC原理事务隔离级别 发布时间:2021-01-19 19:43:38 mysql事务隔离级别可重复读面试题 熊大 话说今天漂亮的妹子给我发过一张图 ...

最新文章

  1. c#启动单个程序(互斥机制)
  2. qt判断读入的字符串是否含有英文_459. 重复的子字符串
  3. 【转载】MySQL Show命令总结
  4. mysql异地备份_MySQL数据库异地备份与还原方法
  5. SAP CRM IBASE头部字段valid from和valid to的填充逻辑
  6. Uncontrolled memory mapping in camera driver (CVE-2013-2595)
  7. [vue] 说说你对MVC、MVP、MVVM模式的理解
  8. 安卓案例:使用AChartEngine绘制折线图
  9. 思卡乐科技发布SR3系列RFID产品
  10. 从Element ui看开发公共组件的三种方式
  11. 报告 | 73%的“落伍”开发者说:明年要学AI技术
  12. Excel VBA 循环读取一个目录下面多个文件的内容,放到另外一个文件中
  13. 以太坊 ERC EIP是什么
  14. 使用Koloda View在Swift中构建类似Tinder(国内的探探社交应用)的卡片
  15. 向云再出发:如数据般飞驰的内蒙古
  16. leafy tree
  17. 关于达芬奇调色台的那些事儿
  18. 关晓彤亮相都市丽人2019秋冬新品推介会
  19. AR体感互动产品大合集
  20. qt - the inferior stopped because it received a signal from the operation system.

热门文章

  1. python加密包_python加密包利用pycrypto包进行AES、DES、MD5等加密
  2. Android BroadcastReceiver广播接收android:priority优先级超过1000,达到2147483647时,广播优先级是否生效
  3. java生成表格图片_java生成表格图片
  4. 切换图片尝试写第一个js插件 图片轮播
  5. 人机界面在石油钻井工程中的应用:如何搭建钻井工程参数监测系统?
  6. 中公计算机基础知识题,计算机考试题库:计算机基础练习题(37)
  7. 基于matlab实现电力系统的无功功率平衡和电压调整
  8. html 代码自动分段,HTML的分段与换行代码说明
  9. hpuoj【1452】你家的狗有病吧【思维】
  10. arm 上 Box86对比QEMU 的一点感受