Mysql有四种事务隔离级别,详解脏读、不可重复读、幻读
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,那么这种事务并发带来的问题,我们把它叫做不可重复读。
幻读
在第一个事务里面我们执行了一个范围查询,这个时候满足条件的数据只有一条。在第二个事务里面,它插入了一行数据,并且提交了。重点:插入了一行数据。在第一个事务里面再去查询的时候,它发现多了一行数据。
一个事务前后两次读取数据数据不一致,是由于其他事务插入数据造成的,这种情况我们把它叫做幻读。
总结
不可重复读是修改或者删除,幻读是插入。 无论是脏读,还是不可重复读,还是幻读,它们都是数据库的读一致性的问题,都是在一个事务里面前后两次读取出现了不一致的情况。
作者:请叫我黄同学
链接:https://juejin.cn/post/7090451611700428837
Mysql有四种事务隔离级别,详解脏读、不可重复读、幻读相关推荐
- 数据库四种事务隔离级别详解
四种数据库隔离级别及解决的数据问题如下所示: 1.READ-UNCOMMITTED(读取未提交内容) 由于在该隔离级别下即使事务未提交所做的修改也会对其他事务产生影响.所以该级别会出现数据脏读的发生. ...
- MySQL 四种事务隔离级别详解及对比--转
http://www.jb51.net/article/100183.htm 接的隔离级别.它的语法如下: ? 1 SET [SESSION | GLOBAL] TRANSACTION ISOLATI ...
- 【MySQL】MySQL的四种事务隔离级别
[MySQL]MySQL的四种事务隔离级别 本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一.事务的基本要素(ACID) 1.原子性(Atomicity):事 ...
- 关于MySQL的四种事务隔离级别!
本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一.事务的基本要素(ACID) 原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不 ...
- MySQL的四种事务隔离级别
本文实验的测试环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一.事务的基本要素(ACID) 1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做 ...
- 【1】MySQL的四种事务隔离级别
二.事务的并发问题 1.脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据 2.不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并 ...
- MySQL的四种事务隔离级别实践
https://www.cnblogs.com/huanongying/p/7021555.html 转载于:https://www.cnblogs.com/AnXinliang/p/9850979. ...
- mysql四种事务隔离级别
mysql事务并发问题 ACID什么的就不啰嗦了.mysql多个事务并发的时候,可能会出现如下问题: 1. 更新丢失 即两个事务同时更新某一条数据,后执行的更新操作会覆盖先执行的更新操作,导致先执行的 ...
- mysql四种输入_mysql四种事务隔离级别
mysql事务并发问题 ACID什么的就不啰嗦了.mysql多个事务并发的时候,可能会出现如下问题: 1. 更新丢失 即两个事务同时更新某一条数据,后执行的更新操作会覆盖先执行的更新操作,导致先执行的 ...
最新文章
- Sonic 开源移动端云真机测试平台 - 设备中心接入安卓设备实例演示,Agent端服务部署过程详解
- 如何直观地解释 back propagation 算法?
- 条款05:了解C++默默编写并调用哪些函数
- Raki的读paper小记:ELECTRA: PRE-TRAINING TEXT ENCODERS AS DISCRIMINATORS RATHER THAN GENERATORS
- Hadoop原理之——HDFS原理
- NUCLEO L476RG学习笔记(六)定时器中断
- Win7系统怎么卸载IE浏览器
- MySQL数据库系统基础_wuli大世界_新浪博客
- 我认识的文华财经指标期货高手一年时间从2万到30万的实际经历
- 如何解决 RecursionError: maximum recursion depth exceeded
- 颜值是第一生产力 - Windows Terminal
- 网线水晶头接法(附图说明)
- java18_【Java】Java_18 方法
- 与技术无关,但却值得码农们好好读一读的怪书:禅与摩托车维修艺术
- win10使用L2TP连接远程服务器失败的问题
- python打开paint并画一个圆
- 数据结构实验报告:图的基本操作及应用
- 计算机网络技术期末论文,计算机网络技术专业论文题目 计算机网络技术论文题目怎么定...
- 基于3D CNN的深度学习卫星图像土地覆盖分类
- 使用阿里云消息服务mns发送短信