详解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命令行操作时的编码问题详解
Apr 14 MySQL
详解MySQL事务的隔离级别与MVCC
Apr 22 MySQL
简单了解 MySQL 中相关的锁
May 25 MySQL
Mysql中 unique列插入重复值该怎么解决呢
May 26 MySQL
MySQL索引失效的典型案例
Jun 05 MySQL
SQL语法CONSTRAINT约束操作详情
Jan 18 MySQL
Mysql分库分表之后主键处理的几种方法
Feb 15 MySQL
MySQL优化常用的19种有效方法(推荐!)
Mar 17 MySQL
Mysql 如何合理地统计一个数据库里的所有表的数据量
Apr 18 MySQL
MySQL中order by的执行过程
Jun 05 MySQL
mysql数据库实现设置字段长度
Jun 10 MySQL
MySQL数据库表约束讲解
Jun 21 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
PHP函数常用用法小结
2010/02/08 PHP
实现PHP框架系列文章(6)mysql数据库方法
2016/03/04 PHP
php使用文本统计访问量的方法
2016/05/12 PHP
静态页面下用javascript操作ACCESS数据库(读增改删)的代码
2007/05/14 Javascript
js实现运行代码需要刷新的解决方法
2007/08/18 Javascript
jquery 批量上传图片实现代码
2010/01/28 Javascript
JAVASCRIPT实现的WEB页面跳转以及页面间传值方法
2010/05/13 Javascript
一个可绑定数据源的jQuery数据表格插件
2010/07/17 Javascript
jQuery.buildFragment使用方法及思路分析
2013/01/07 Javascript
jquery实现pager控件示例
2014/04/09 Javascript
iframe里的页面禁止右键事件的方法
2014/06/10 Javascript
jquery简单实现外部链接用新窗口打开的方法
2015/05/30 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
2015/06/24 Javascript
深入理解js promise chain
2016/05/05 Javascript
JavaScript判断数字是否为质数的方法汇总
2016/06/02 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
laydate.js日期时间选择插件
2017/01/04 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
2017/04/17 jQuery
vue2.0 elementUI制作面包屑导航栏
2018/02/22 Javascript
微信小程序停止其他视频播放当前视频的实例代码
2019/12/25 Javascript
js实现带搜索功能的下拉框
2020/01/11 Javascript
JS浏览器BOM常见操作实例详解
2020/04/27 Javascript
[01:06:30]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第二场 1月9日
2021/03/11 DOTA
[41:21]夜魇凡尔赛茶话会 第三期02:看图识人
2021/03/11 DOTA
python中使用xlrd、xlwt操作excel表格详解
2015/01/29 Python
python实现下载pop3邮件保存到本地
2018/06/19 Python
小程序canvas中文字设置居中锚点
2019/04/16 HTML / CSS
浅析HTML5页面元素及属性
2021/01/20 HTML / CSS
Gtech官方网站:地毯清洁器、吸尘器及园艺设备
2018/05/23 全球购物
英国Iceland杂货店:网上食品购物
2020/12/16 全球购物
初一体育教学反思
2014/01/29 职场文书
我的未来不是梦演讲稿
2014/09/02 职场文书
2014物价局民主生活会对照检查材料思想汇报
2014/09/24 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
2016个人廉洁自律承诺书
2016/03/25 职场文书