mysql置事务隔离级

在这里插入图片描述

隔离级别脏读(Dirty Read)不可重复读(Non-Repeatable Read)幻读(Phantom Read)
读未提交
读已提交
可重复读
序列化

这个表格以可读性的方式总结了四种隔离级别下可能发生的并发问题。
以下是对脏读(Dirty Read)、不可重复读(Non-Repeatable Read)和幻读(Phantom Read)的解释及其如何发生的描述:

  1. 脏读(Dirty Read)

    • 定义:脏读是指一个事务在读取了另一个事务未提交的数据后,后者发生了回滚,那么读取到的数据是无效的,称之为脏读。
    • 发生方式:当一个事务修改了某些数据,但尚未提交时,另一个事务读取了这些未提交的数据,然后第一个事务回滚,导致第二个事务读取到的数据实际上是无效的或不一致的。
  2. 不可重复读(Non-Repeatable Read)

    • 定义:不可重复读是指在一个事务内的两次查询之间,另一个事务修改了数据并提交,导致两次查询返回的结果不一致,即第二次读取到的数据与第一次读取到的数据不一样。
    • 发生方式:当一个事务在读取数据后,另一个事务修改了这些数据并提交,然后第一个事务再次读取同样的数据,结果与之前不一致,因为数据已经被修改。
  3. 幻读(Phantom Read)

    • 定义:幻读是指一个事务在读取了一系列的数据后,另一个事务插入了一些新的数据,导致第一个事务在后续读取相同的数据时,发现有额外的数据出现,就像出现了幻觉一样。
    • 发生方式:当一个事务在读取某些数据后,另一个事务插入了新的符合查询条件的数据,并提交,然后第一个事务再次读取相同的数据,结果发现有新的数据出现,就好像出现了幻觉一样。

这些并发问题通常是由于多个事务同时对数据库进行操作,而没有足够的隔离度保证,导致了数据的不一致性和可见性问题。不同的事务隔离级别可以解决或减轻这些问题的发生。

如何避免?

资源加锁,如redis分布式锁

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值