MySQL可重复读应用场景_mysql-repeatable read 可重复读隔离级别-幻读实例场景
本文详解 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 可重复读隔离级别-幻读实例场景相关推荐
- 「Mysql 事务 隔离级别」 读提交和可重复读的区别
一.前提 首先我们应该先明确 Mysql的四种隔离级别和四种对应的现象 隔离级别: 读未提交.读已提交.可重复读.串行化 现象: 脏读.丢失修改.不可重复读.幻读 二.先说结论 读提交和可重复读都是一 ...
- 看完这篇文章,让你彻底理解事务隔离级别(读未提交、读已提交、可重复读、序列化)
对于不同的事务,采用不同的隔离级别分别有不同的现象.主要有下面3种: 1.脏读(dirty read):一个事务可以读取另一个尚未提交事务的修改数据. 2.不可重复读(nonrepeatable re ...
- 脏读、不可重复读 共享锁、悲观锁 和 事务五种隔离级别
http://www.cnblogs.com/adforce/archive/2011/04/20/2021929.html 一.脏读.不可重复读.幻读 1.脏读:脏读就是指当一个事务正在访问数据,并 ...
- MySQL 事务 :ACID、并发带来的问题、事务的隔离级别、事务的实现
文章目录 ACID 原子性 一致性 持久性 隔离性 并发带来的隔离问题 幻读(虚读) 不可重复读 脏读 丢失更新 隔离级别 Read Uncommitted (读未提交) Read Committed ...
- mysql事务的acid、三种并发问题与四种隔离级别
这里写目录标题 事物的ACID 事物并非下所引发的三种问题 以MYSQL数据库来分析四种隔离级别 mysql相关操作 Spring事物的传播行为 事物的ACID 事务是一个不可分割的数据库操作序列,是 ...
- mysql不可重复读是锁的表吗_Mysql事务,并发问题,锁机制-- 幻读、不可重复读(转)...
1.什么是事务 事务是一条或多条数据库操作语句的组合,具备ACID,4个特点. 原子性:要不全部成功,要不全部撤销 隔离性:事务之间相互独立,互不干扰 一致性:数据库正确地改变状态后,数据库的一致性约 ...
- mysql特性举例_MySQL事务的四大特性和隔离级别
1.事务的四大特性(ACID) #### 1.1.原子性(Atomicity) 原子性是指事务包含的一系列操作要么全部成功,要么全部回滚,不存在部分成功或者部分回滚,是一个不可分割的操作整体. 1.2 ...
- Mysql存储级别_mysql 存储引擎分类和事务隔离级别
mysql 存储引擎分类 myisam和innodb的区别 1. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条S ...
- mysql mvcc 读写阻塞_mysql面试题MVCC原理事务隔离级别_aiailingfei的博客-CSDN博客
原文作者:小小一只鸟 原文标题:mysql面试题MVCC原理事务隔离级别 发布时间:2021-01-19 19:43:38 mysql事务隔离级别可重复读面试题 熊大 话说今天漂亮的妹子给我发过一张图 ...
最新文章
- c#启动单个程序(互斥机制)
- qt判断读入的字符串是否含有英文_459. 重复的子字符串
- 【转载】MySQL Show命令总结
- mysql异地备份_MySQL数据库异地备份与还原方法
- SAP CRM IBASE头部字段valid from和valid to的填充逻辑
- Uncontrolled memory mapping in camera driver (CVE-2013-2595)
- [vue] 说说你对MVC、MVP、MVVM模式的理解
- 安卓案例:使用AChartEngine绘制折线图
- 思卡乐科技发布SR3系列RFID产品
- 从Element ui看开发公共组件的三种方式
- 报告 | 73%的“落伍”开发者说:明年要学AI技术
- Excel VBA 循环读取一个目录下面多个文件的内容,放到另外一个文件中
- 以太坊 ERC EIP是什么
- 使用Koloda View在Swift中构建类似Tinder(国内的探探社交应用)的卡片
- 向云再出发:如数据般飞驰的内蒙古
- leafy tree
- 关于达芬奇调色台的那些事儿
- 关晓彤亮相都市丽人2019秋冬新品推介会
- AR体感互动产品大合集
- qt - the inferior stopped because it received a signal from the operation system.
热门文章
- python加密包_python加密包利用pycrypto包进行AES、DES、MD5等加密
- Android BroadcastReceiver广播接收android:priority优先级超过1000,达到2147483647时,广播优先级是否生效
- java生成表格图片_java生成表格图片
- 切换图片尝试写第一个js插件 图片轮播
- 人机界面在石油钻井工程中的应用:如何搭建钻井工程参数监测系统?
- 中公计算机基础知识题,计算机考试题库:计算机基础练习题(37)
- 基于matlab实现电力系统的无功功率平衡和电压调整
- html 代码自动分段,HTML的分段与换行代码说明
- hpuoj【1452】你家的狗有病吧【思维】
- arm 上 Box86对比QEMU 的一点感受