脏写和脏读都是在多个事务同时修改或读取同一行数据的情况下产生的问题。比如现在有事务1和事务2同时对一行数据进行修改,事务1将值改成1,而事务2将值改成了2,这时的值应该是2,但是就在这时,事务1发生了回滚,通过undo log,事务1将值回滚到原来的值0,而此时事务2一看我更新的2怎么突然变成0了,这就是脏写。

所谓脏写,就是刚才明明写了一个数据值,结果过了一会儿却没了,本质就是事务2去修改了事务1修改过的值,但是此时事务1还没提交,所以事务1随时会回滚,导致事务2修改的值也没了。

脏读和脏写差不多,比如现在有两个事务1和事务2,事务1修改值为1,就在这时事务2来读取到1这个值,然后做一推业务处理,但是事务1此时发生回滚了将值回滚成0,这个是事务2又来读取这个值,发现变成了0,和之前读的1完全不同,这就是所谓的脏读。

如果事务2在事务1提交之前,是读不到事务1修改的值,必须要等事务1提交之后,才能读到事务1修改的值也就是1,那么这就解决了脏读的问题,但是这又会带来一个问题:不可重复读,假设事务1现在开启事务,第一次读取到的数据就是0,此时事务2将值修改为2,并提交事务,这时事务1第二次读取到值2,此时事务3将值改成3,并提交事务,那么事务1再次读取到的值是3,这就是不可重复读的问题。

其实幻读也很简单,比如事务1执行一条sql,"select * from user where id>5",结果出现了2条数据,此时事务2新插入2条数据,并且提交事务,此时事务1又执行了"select * from user where id>5",结果出现了四条数据,此时事务3也插入了两条数据,并提交了事务,事务1又执行了"select * from user where id>5",结果出现了六条数据。每次执行相同的sql,结果的数量是不一样的,这就是幻读。

如果想了解更多,请关注我的公众号-辉哥讲技术

MySQL之脏写、脏读、不可重复读、幻读相关推荐

  1. mysql 脏读 不可重复读 幻读_mysql事务隔离级别/脏读/不可重复读/幻读详解

    一.四种事务隔离级别 1.1read uncommitted 读未提交 即:事务A可以读取到事务B已修改但未提交的数据. 除非是文章阅读量,每次+1这种无关痛痒的场景,一般业务系统没有人会使用该事务隔 ...

  2. 脏读,不可重复读,幻读区别

    脏读 脏读又称无效数据读出.一个事务读取另外一个事务还没有提交的数据叫脏读. 例如:事务T1修改了一行数据,但是还没有提交,这时候事务T2读取了被事务T1修改后的数据,之后事务T1因为某种原因Roll ...

  3. mysql不可重复读和重复读_MySql隔离级别:RU / RC / RR / S + 脏读 / 不可重复读 / 幻读 / 可重复读...

    MySQL 事务 本文所说的 MySQL 事务都是指在 InnoDB 引擎下,MyISAM 引擎是不支持事务的. 数据库事务指的是一组数据操作,事务内的操作要么就是全部成功,要么就是全部失败,什么都不 ...

  4. oracle 脏读,脏读 不可重复读 幻读

    序言 脏读.不可重复读.幻读这几个概念开始接触和学习的时候是在大学学习数据库系统的时候,那时候对这几个专业名词的理解停留在概念文字上,并没有真正使用过实践中,最近工作中涉及到这几个概念方面的知识,就来 ...

  5. 脏读,不可重复读,幻读区别和避免

    在了解脏读,不可重复度,幻读之前,首先要明白这三种情况的出现都是和数据库并发事务有关联的,如果所有的读写都按照队列的形式进行,就不会出现问题. 名词解析和解决方案 脏读 脏读又称无效数据读出(读出了脏 ...

  6. mysql系列:加深对脏读、脏写、可重复读、幻读的理解

    关于相关术语的专业解释,请自行百度了解,本文皆本人自己结合参考书和自己的理解所做的阐述,如有不严谨之处,还请多多指教. **不可重复读的重点是修改: **同一事务,两次读取到的数据不一样. 幻读的重点 ...

  7. Mysql如何实现隔离级别 - 可重复读和读提交 源码分析

    Abstract 本文会(1) 演示Mysql的两种隔离级别.  (2) 跟着mysql的源代码来看看它是怎么实现这两种隔离级别的. Mysql的隔离级别 当有多个事务并发执行时, 我们需要考虑他们之 ...

  8. MySQL事务隔离级别:可重复读、读已提交、读未提交。实操

    MySQL的事务隔离级别: 目录 一.可重复读(默认) REPEATABLE-READ: 二.读已提交  READ-COMMITTED: 一.可重复读(默认) REPEATABLE-READ: 准备实 ...

  9. Mysql事务,并发问题,锁机制-- 幻读、不可重复读--专题

    1.什么是事务 事务是一条或多条数据库操作语句的组合,具备ACID,4个特点. 原子性:要不全部成功,要不全部撤销 隔离性:事务之间相互独立,互不干扰 一致性:数据库正确地改变状态后,数据库的一致性约 ...

  10. ​​​​​​​面试官:MySql在Repeatable Read下面是否会有幻读出现?

    目录 ▎事务隔离级别定义 了解:三种读现象(Read phenomena) ▎幻读:在可重复读级别下的 "特殊场景" 所以:MySQL的 InnoDB引擎在RR级别下到底能否解决幻 ...

最新文章

  1. 登高自卑 | 我的PyTorch入门与实践笔记
  2. linux查看telnet进程,SuseLinux上配置Telnet服务,重启xinetd守护进程时的异常
  3. 自然语言处理中的Attention Model:是什么以及为什么[一]
  4. 自动打包linux,Linux环境下Springboot自动打包发布功能
  5. C/C++语法知识:typedef struct 用法详解
  6. 黑马vue实战项目-(三)权限管理功能开发
  7. 如何在Java项目中定义并调用自己编写的native方法?
  8. Python批量下载抖音大V主页视频
  9. 历代iPhone主要参数对比,更新于2022年03月
  10. 小白的破解WiFi之路1----VMware、kali安装
  11. mysql windows局域网访问_window下 局域网内使用mysql,mysql 开启远程访问权限
  12. Codeforces Round #496 (Div. 3) E2 - Median on Segments (General Case Edition)(思维+用bit 位求前缀合)
  13. 6v网站迅雷下载电影任务出错
  14. 啤酒和尿布:一文看懂关联规则
  15. 历届试题 Excel地址(Excel单元格的地址表示很有趣,它使用字母来表示列号。   比如,   A表示第1列,   B表示第2列,   Z表示第26列,   AA表示第27列,)
  16. 读书和不读书的人,最大的区别是什么?--林语堂
  17. win10 不能查看其它电脑共享文件夹常用解决方法
  18. Python网络爬虫:PPT素材
  19. Python篇:用python画xy散点图
  20. Android WebView onShowFileChooser 无法重复调用.

热门文章

  1. Kylin操作系统读不到U盘解决方法
  2. ubuntu的分辨率突然变得很奇怪或者ubuntu 上qq无法打开
  3. [杂记]一些感悟,随时更新
  4. C语言使用QRcode生成二维码
  5. C语言图形函数代码~持续更新中
  6. USB转232串口驱动程序
  7. html 无缝轮播图完整代码
  8. 当清晨的第一缕阳光洒在我的头发上, 我知道,一个崭新的太阳升起来了
  9. 深度学习_深度学习基础知识_PReLU
  10. 西门子培训2——OID