详解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 06 MySQL
MySQL的join buffer原理
Apr 29 MySQL
Mysql效率优化定位较低sql的两种方式
May 26 MySQL
MySQL Router实现MySQL的读写分离的方法
May 27 MySQL
SQL实现LeetCode(175.联合两表)
Aug 04 MySQL
MySQL千万级数据表的优化实战记录
Aug 04 MySQL
Mysql排序的特性详情
Nov 01 MySQL
浅谈MySQL中的六种日志
Mar 23 MySQL
MySQL磁盘碎片整理实例演示
Apr 03 MySQL
解决Mysql中的innoDB幻读问题
Apr 29 MySQL
MySQL安装失败的原因及解决步骤
Jun 14 MySQL
MySQL池化框架学习接池自定义
Jul 23 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
PHP数组排序函数合集 以及它们之间的联系分析
2013/06/27 PHP
php获取网页上所有链接的方法
2015/04/03 PHP
php curl模拟post请求和提交多维数组的示例代码
2015/11/19 PHP
jquery 批量上传图片实现代码
2010/01/28 Javascript
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
jQuery1.9.1针对checkbox的调整方法(prop)
2014/05/01 Javascript
input标签内容改变的触发事件介绍
2014/06/18 Javascript
JavaScript的RequireJS库入门指南
2015/07/01 Javascript
深入理解JavaScript中的箭头函数
2015/07/28 Javascript
使用jquery获取url及url参数的简单实例
2016/06/14 Javascript
JS针对Array的各种操作汇总
2016/11/29 Javascript
详解Jquery Easyui的验证扩展
2017/01/09 Javascript
JS得到当前时间的方法示例
2017/03/24 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
2017/06/06 Javascript
jQuery Jsonp跨域模拟搜索引擎
2017/06/17 jQuery
AngularJS常见过滤器用法实例总结
2017/07/06 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
Python常用内置函数总结
2015/02/08 Python
Python安装模块的常见问题及解决方法
2018/02/05 Python
详解tensorflow载入数据的三种方式
2018/04/24 Python
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
Python Django给admin添加Action的方法实例详解
2019/04/29 Python
Python除法之传统除法、Floor除法及真除法实例详解
2019/05/23 Python
Pytorch中accuracy和loss的计算知识点总结
2019/09/10 Python
tensorflow之获取tensor的shape作为max_pool的ksize实例
2020/01/04 Python
利用Python计算KS的实例详解
2020/03/03 Python
几个常见的消息中间件(MOM)
2014/01/08 面试题
材料化学应届生求职信
2013/10/09 职场文书
仓库门卫岗位职责
2013/12/22 职场文书
道德大讲堂实施方案
2014/05/14 职场文书
2014年政工师工作总结
2014/12/18 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
宝葫芦的秘密观后感
2015/06/11 职场文书
Python实现将多张图片合成MP4视频并加入背景音乐
2022/04/28 Python