详解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 05 MySQL
详解MySQL 用户权限管理
Apr 20 MySQL
MySQL 8.0 之不可见列的基本操作
May 20 MySQL
Mysql 设置boolean类型的操作
Jun 04 MySQL
如何使用分区处理MySQL的亿级数据优化
Jun 18 MySQL
MySQL 8.0 驱动与阿里druid版本兼容问题解决
Jul 01 MySQL
MySQL数据库超时设置配置的方法实例
Oct 15 MySQL
MySQL中varchar和char类型的区别
Nov 17 MySQL
MySQL数据库如何给表设置约束详解
Mar 13 MySQL
为什么MySQL不建议使用SELECT *
Apr 03 MySQL
MySQL 计算连续登录天数
May 11 MySQL
MySQL优化之慢日志查询
Jun 10 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
html中select语句读取mysql表中内容
2006/10/09 PHP
php 数组排序 array_multisort与uasort的区别
2011/03/24 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
2014/06/12 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
2016/01/18 PHP
symfony2.4的twig中date用法分析
2016/03/18 PHP
php版微信公众平台接口开发之智能回复开发教程
2016/09/22 PHP
PNG背景在不同浏览器下的应用
2009/06/22 Javascript
JavaScript Ajax编程 应用篇
2016/07/02 Javascript
Seajs是什么及sea.js 由来,特点以及优势
2016/10/13 Javascript
基于bootstrap的选择框插件icheck
2016/12/23 Javascript
Vue2.0实现购物车功能
2017/06/05 Javascript
分析javascript中9 个常见错误阻碍你进步
2017/09/18 Javascript
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
2020/04/20 Javascript
Python自动化构建工具scons使用入门笔记
2015/03/10 Python
python网络编程之文件下载实例分析
2015/05/20 Python
Python实现删除文件中含“指定内容”的行示例
2017/06/09 Python
Python面向对象编程基础解析(二)
2017/10/26 Python
python 执行终端/控制台命令的例子
2019/07/12 Python
8段用于数据清洗Python代码(小结)
2019/10/31 Python
python绘制雪景图
2019/12/16 Python
Python中bisect的使用方法
2019/12/31 Python
keras获得model中某一层的某一个Tensor的输出维度教程
2020/01/24 Python
pandas apply多线程实现代码
2020/08/17 Python
俄罗斯品牌服装在线商店:VIPAVENUE
2020/08/10 全球购物
跟单文员岗位职责
2014/01/03 职场文书
讲文明树新风公益广告宣传方案
2014/02/25 职场文书
求职意向书范文
2014/04/01 职场文书
奥巴马就职演讲稿
2014/05/15 职场文书
提拔干部考察材料
2014/05/26 职场文书
供电工程专业求职信
2014/08/09 职场文书
预备党员考察意见范文
2015/06/01 职场文书
初中政教处工作总结
2015/08/12 职场文书
详解Python 3.10 中的新功能和变化
2021/04/28 Python
解决pytorch读取自制数据集出现过的问题
2021/05/31 Python
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers