详解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 Router的安装部署
Apr 24 MySQL
浅谈mysql执行过程以及顺序
May 12 MySQL
新手必备之MySQL msi版本下载安装图文详细教程
May 21 MySQL
Mysql 用户权限管理实现
May 25 MySQL
为什么MySQL分页用limit会越来越慢
Jul 25 MySQL
MySQL约束超详解
Sep 04 MySQL
MySQL常见优化方案汇总
Jan 18 MySQL
MySQL的索引你了解吗
Mar 13 MySQL
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
Mar 22 MySQL
为什么MySQL不建议使用SELECT *
Apr 03 MySQL
MySQL性能指标TPS+QPS+IOPS压测
Aug 05 MySQL
SQL Server数据库的三种创建方法汇总
May 08 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
phplock(php进程锁) v1.0 beta1
2009/11/24 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
点弹代码 点击页面任何位置都可以弹出页面效果代码
2012/09/17 Javascript
利用JQuery制作符合Web标准的QQ弹出消息
2014/01/14 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
浅谈jQuery中的事件
2015/03/23 Javascript
如何利用AngularJS打造一款简单Web应用
2015/12/05 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
2020/12/24 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
2016/06/23 Javascript
jQuery基于Ajax方式提交表单功能示例
2017/02/10 Javascript
Vue实现购物车功能
2017/04/27 Javascript
详解webpack进阶之插件篇
2017/07/06 Javascript
js学习总结之DOM2兼容处理this问题的解决方法
2017/07/27 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
2017/11/22 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
JS实现对json对象排序并删除id相同项功能示例
2018/04/18 Javascript
vue中tab选项卡的实现思路
2018/11/25 Javascript
vue组件之间通信实例总结(点赞功能)
2018/12/05 Javascript
详解解决小程序中webview页面多层history返回问题
2019/08/20 Javascript
jquery.tagsinput.js实现记录checkbox勾选的顺序
2019/09/21 jQuery
[02:45]DOTA2英雄基础教程 伐木机
2013/12/23 DOTA
深入理解Python中的元类(metaclass)
2015/02/14 Python
使用Python脚本来控制Windows Azure的简单教程
2015/04/16 Python
Python中的with...as用法介绍
2015/05/28 Python
Python连接DB2数据库
2016/08/27 Python
Python格式化日期时间操作示例
2018/06/28 Python
linux下安装python3和对应的pip环境教程详解
2019/07/01 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
采用冷却技术的超自然舒适度:GhostBed床垫
2018/09/18 全球购物
美国厨房和园艺工具网上商店:Nestneed
2019/08/24 全球购物
我爱读书演讲稿
2014/05/07 职场文书
小组名称和口号
2014/06/09 职场文书
我的中国梦演讲稿高中篇
2014/08/19 职场文书
委托书怎样写
2014/08/30 职场文书
村干部群众路线整改措施思想汇报
2014/10/12 职场文书