MySQL 事务隔离级别

事务性质

事务有四大特性(ACID):

  • 原子性(Atomicity): 事务作为一个整体被执行,要么全部执行,要么全不执行。
  • 一致性(Consistency): 指在事务开始之前和事务结束以后,数据不会被破坏。
  • 隔离性(Isolation): 多个事务并发访问时,事务之间是相互隔离的,一个事务不应该被其他事务干扰,多个并发事务之间要相互隔离。
  • 持久性(Durability): 表示事务完成提交后,该事务对数据库所做的更改操作,将持久地保存在数据库之中。

并发场景的问题

MySQL 在并发场景三大问题:脏读、不可重复读和幻读。

脏读:事务 A、B 交替执行,事务 A 读取到了事务B未提交的数据,即为脏读。

不可重复读:A、B 两事务,事务 A 范围内,两次查询相同数据,受到事务 B 的影响,读取数据不一致。

幻读:A、B 两事务,A事务的两次查询期间,B 新增/删除事务提交了,导致两次查询得到的记录数量不同。

四大隔离级别

MySQL 有四大事务等级:读未提交,读已提交,可重复读和串行化。

读未提交(Read Uncommited):最低级的事务等级,有脏读的问题。
读已提交(Read Commited):会出现不可重复读的问题。
可重复读(Repeatable Read):解决不可重复读问题,极大程度解决了幻读的问题,但在一定场景下仍然出现幻读。
串行化(Serializable):最高等级事务,重量级。读写互斥。

读未提交:可以读取到其他事务未提交的数据,出现脏读问题。

在这里插入图片描述
B事务
读已提交:事务 A 期间能够读取到事务 B 提交的数据,出现不可重复读问题。

A事务 读已提交

B 事务 读已提交
可重复读:还会有一定的幻读问题。

事务 A 可重复读
事务B 可重复读
但在事务 A 期间,事务 B 进行新增操作,事务 A 又恰巧更新了该条记录,出现幻读。

在这里插入图片描述
事务B 新增串行化:读写互斥。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值