详解Mysql事务并发(脏读、不可重复读、幻读)


Posted in MySQL onApril 29, 2022

Mysql的事务隔离级别

详解Mysql事务并发(脏读、不可重复读、幻读)

Mysql有四种事务隔离级别,这四种隔离级别代表当存在多个事务并发冲突时,可能出现的脏读、不可重复读、幻读的问题。

脏读

详解Mysql事务并发(脏读、不可重复读、幻读)

大家看一下,我们有两个事务,一个是 Transaction A,一个是 Transaction B,在第一个事务里面,它首先通过一个 where id=1 的条件查询一条数据,返回 name=Ada,age=16 的这条数据。然后第二个事务呢,它同样地是去操作 id=1 的这行数据,它通过一个 update 的语句,把这行 id=1 的数据的 age 改成了 18,但是大家注意,它没有提交。这个时候,在第一个事务里面,它再次去执行相同的查询操作,发现数据发生了变化,获取到的数据 age 变成了 18。那么,这种在一个事务里面,由于其他的时候修改了数据并且没有提交,而导致了前后两次读取数据不一致的情况,这种事务并发的问题,我们把它定义成脏读。

不可重复读

详解Mysql事务并发(脏读、不可重复读、幻读)

同样是两个事务,第一个事务通过 id=1 查询到了一条数据。然后在第二个事务里面执行了一个 update 操作,这里大家注意一下,执行了 update 以后它通过一个 commit提交了修改。然后第一个事务读取到了其他事务已提交的数据导致前后两次读取数据不一致的情况,就像这里,age 到底是等于 16 还是 18,那么这种事务并发带来的问题,我们把它叫做不可重复读。

幻读

在第一个事务里面我们执行了一个范围查询,这个时候满足条件的数据只有一条。在第二个事务里面,它插入了一行数据,并且提交了。重点:插入了一行数据。在第一个事务里面再去查询的时候,它发现多了一行数据。

详解Mysql事务并发(脏读、不可重复读、幻读)

一个事务前后两次读取数据数据不一致,是由于其他事务插入数据造成的,这种情况我们把它叫做幻读。

总结

不可重复读是修改或者删除,幻读是插入。 无论是脏读,还是不可重复读,还是幻读,它们都是数据库的读一致性的问题,都是在一个事务里面前后两次读取出现了不一致的情况。

到此这篇关于Mysql事务并发脏读+不可重复读+幻读详解的文章就介绍到这了!


Tags in this post...

MySQL 相关文章推荐
MySQL的join buffer原理
Apr 29 MySQL
mysql 8.0.24 安装配置方法图文教程
May 12 MySQL
详解MySQL集群搭建
May 26 MySQL
如何搭建 MySQL 高可用高性能集群
Jun 21 MySQL
MySQL中日期型单行函数代码详解
Jun 21 MySQL
ORM模型框架操作mysql数据库的方法
Jul 25 MySQL
解析MySQL索引的作用
Mar 03 MySQL
关于MySQL临时表为什么可以重名的问题
Mar 22 MySQL
MySQL插入数据与查询数据
Mar 25 MySQL
提高系统的吞吐量解决数据库重复写入问题
Apr 23 MySQL
MYSQL事务的隔离级别与MVCC
May 25 MySQL
mysql序号rownum行号实现方式
Dec 24 MySQL
MySQL 条件查询的常用操作
Apr 28 #MySQL
mysql 子查询的使用
Apr 28 #MySQL
Mysql 数据库中的 redo log 和 binlog 写入策略
Apr 26 #MySQL
优化Mysql查询的示例
Apr 26 #MySQL
MySQL的存储过程和相关函数
Apr 26 #MySQL
mysql 索引的数据结构为什么要采用B+树
MySQ InnoDB和MyISAM存储引擎介绍
You might like
Mac下php 5升级到php 7的步骤详解
2017/04/26 PHP
laravel框架之数据库查出来的对象实现转化为数组
2019/10/23 PHP
PHP7创建COOKIE和销毁COOKIE的实例方法
2020/02/03 PHP
利用js对象弹出一个层
2008/03/26 Javascript
Jquery遍历checkbox获取选中项value值的方法
2014/02/13 Javascript
22点关于jquery性能优化的建议
2014/05/28 Javascript
jQuery trigger()方法用法介绍
2015/01/13 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
详解jquery事件delegate()的使用方法
2016/01/25 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
2017/04/13 Javascript
Express框架之connect-flash详解
2017/05/31 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
对存在JavaScript隐式类型转换的四种情况的总结(必看篇)
2017/08/31 Javascript
JavaScript表单即时验证 验证不成功不能提交
2017/08/31 Javascript
JS实现匀加速与匀减速运动的方法示例
2017/09/04 Javascript
基于JavaScript获取base64图片大小
2019/10/18 Javascript
JS 创建对象的模式实例小结
2020/04/28 Javascript
python中循环语句while用法实例
2015/05/16 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
2019/10/17 Python
Python 词典(Dict) 加载与保存示例
2019/12/06 Python
使用CSS3来匹配横屏竖屏的简单方法
2015/08/04 HTML / CSS
Canvas获取视频第一帧缩略图的实现
2020/11/11 HTML / CSS
美国休闲服装品牌:J.Crew Factory
2017/03/04 全球购物
美国领先的在线邮轮旅游公司:CruiseDirect
2018/06/07 全球购物
美国最大的烧烤架和户外生活用品专业零售商:Barbeques Galore
2021/01/09 全球购物
市场营销专业个人自荐信格式
2013/09/21 职场文书
车间班长岗位职责
2013/11/30 职场文书
销售找工作求职信
2013/12/20 职场文书
税务干部鉴定材料
2014/02/11 职场文书
民政局个人整改措施
2014/09/24 职场文书
小学班主任事迹材料
2014/12/17 职场文书
房产公证书格式
2015/01/26 职场文书
孝女彩金观后感
2015/06/10 职场文书
Redis6.0搭建集群Redis-cluster的方法
2021/05/08 Redis
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript
python图像处理 PIL Image操作实例
2022/04/09 Python