Mysql的事务隔离级别

Mysql有四种事务隔离级别,这四种隔离级别代表当存在多个事务并发冲突时,可能出现的脏读、不可重复读、幻读的问题。

脏读

大家看一下,我们有两个事务,一个是 Transaction A,一个是 Transaction B,在第一个事务里面,它首先通过一个 where id=1 的条件查询一条数据,返回 name=Ada,age=16 的这条数据。然后第二个事务呢,它同样地是去操作 id=1 的这行数据,它通过一个 update 的语句,把这行 id=1 的数据的 age 改成了 18,但是大家注意,它没有提交。这个时候,在第一个事务里面,它再次去执行相同的查询操作,发现数据发生了变化,获取到的数据 age 变成了 18。那么,这种在一个事务里面,由于其他的时候修改了数据并且没有提交,而导致了前后两次读取数据不一致的情况,这种事务并发的问题,我们把它定义成脏读。

不可重复读

同样是两个事务,第一个事务通过 id=1 查询到了一条数据。然后在第二个事务里面执行了一个 update 操作,这里大家注意一下,执行了 update 以后它通过一个 commit提交了修改。然后第一个事务读取到了其他事务已提交的数据导致前后两次读取数据不一致的情况,就像这里,age 到底是等于 16 还是 18,那么这种事务并发带来的问题,我们把它叫做不可重复读。

幻读

在第一个事务里面我们执行了一个范围查询,这个时候满足条件的数据只有一条。在第二个事务里面,它插入了一行数据,并且提交了。重点:插入了一行数据。在第一个事务里面再去查询的时候,它发现多了一行数据。

一个事务前后两次读取数据数据不一致,是由于其他事务插入数据造成的,这种情况我们把它叫做幻读。

总结

不可重复读是修改或者删除,幻读是插入。
无论是脏读,还是不可重复读,还是幻读,它们都是数据库的读一致性的问题,都是在一个事务里面前后两次读取出现了不一致的情况。

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详解(六)

    MySql详解(六) MySql事务 一.含义 事务:一条或多条sql语句组成一个执行单位,一组sql语句要么都执行要么都不执行 二.特点(ACID) A 原子性:一个事务是不可再分割的整体,要么都执 ...

  7. mysql中mvcc解决不可重复读

    最近在了解了mysql中事务的隔离级别,记录一下 事务的隔离级别: 隔离级别 脏读 不可重复读 幻读 读未提交 read-uncommitted 是 是 是 读已提交 read-committed 否 ...

  8. MySQL详解--锁

    锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算资源(如CPU.RAM.I/O等)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是所有数 ...

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

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

  10. MySQL可重复读和读已提交实现原理,深入理解MVCC。

    1.隔离级别 MySQL中隔离级别分为4种,提未交读.读已提交.可重复读.串行化.同时MySQL默认隔离级别为可重复读. 图片 查看MySQL隔离级别 SELECT @@tx_isolation 设置 ...

最新文章

  1. 通过企业分布式缓存共享运行时数据
  2. python输入文字、成为字典_Python 字典(Dictionary)操作详解
  3. go语言的range使用
  4. c++牛客网面试题05. 替换空格
  5. jsp 的 for循环
  6. GraphChi: Large-Scale Graph Computation on Just a PC
  7. SQLi LABS Less-12 联合注入+报错注入
  8. 蓝桥杯2019年第十届C/C++省赛A组第四题-迷宫
  9. Uboot详细解析1
  10. 通达信画线文件是在服务器吗,通达信画线工具的使用说明★★★★
  11. DNS是什么意思?什么是DNS服务器?(中科三方)
  12. Latex 1: 解决latex中遇到一个常见错误:Improper alphabetic constant.
  13. 干货|遗传+禁忌混合算法(HA)算法求解柔性作业车间调度问题(FJSP)附java代码-第一部分
  14. D-OJ刷题日记:顺序查找 题目编号:517
  15. unity-IL2CPP工程打包失败记录
  16. 遇见未来 | 对话朱贤文: PostgreSQL是一匹即将发力的黑马
  17. 迪士尼机器人芭蕾舞_浅析迪士尼跳跳虎机器人
  18. 【ORACLE】ORA-01653: unable to extend table XXXX by 128 in tablespace XXX
  19. 【特征检测】BRISK特征提取算法
  20. iQQ 学习笔记2 :借助新浪微博输入验证码、远程控制退出

热门文章

  1. FOC电动车控制器代码 原理图 pcb 无刷电机FOC控制量产方案,原理图,PCB,源代码
  2. linux乘机模式怎么关闭,坐飞机前 在CentOS Linux中检查电池容量
  3. 教你如何清除上网记录
  4. mysql异步task_EasySwoole高性能task异步任务
  5. java的Timer计时器实现几秒后循环执行代码的例子
  6. 抖音短视频批量采集下载软件哪些好?如何下载?轻松搬运视频,快速批量处理水印去除LOGO!...
  7. php 内置的 web 服务器
  8. win7 右键计算机无反映,win7系统鼠标右键没有反应怎么办?
  9. 【文献阅读】将VQA视作元学习(Damien Teney等人,ECCV,2018)
  10. C语言将16进制数转为10进制数