事务隔离级别

前言

为什么会有事务的隔离级别,是在多个事务并发的时候会产生以下问题,如脏读、不可从复读、幻读

脏读
在这里插入图片描述
现在有事务1和事务2两个,事务2先开始执行,将金额改为800,还未提交,然后事务1进来查询,那么此时查询到的金额就是800,这时事务2开始回滚,那么此时事务1读取到的数据就是未提交的数据,也就是800这个脏数据。

一个事务读取到另一个事务中没有提交的数据,就会在本事务中产生数据不一致的问题,解决方式就是将事务隔离级别设置为读已提交即可!那么未提交的数据就无法获取到!

不可从复读
在这里插入图片描述
事务1和事务2,事务1中包含两条查询,事务1先开始执行,执行完第一条SQL后事务2开始执行,事务2中有一个修改,将金额修改为800,然后事务1开始执行第2条SQL,那么此时两条相同的SQL读取到的金额就不是一样的!那么这是不可从复读

一个事务中,多次获取相同的数据,但是读取结果不一样,会在本事务中产生数据不一致的问题,解决方式就是将事务的隔离级别设置为可从复读,也就是确保事务1中多次查询获取到相同的值,即事务1在执行期间禁止其他事务对这个数据进行更新(给数据加行锁)

幻读
在这里插入图片描述
一个事务中,多次对数据进行整表数据读取,(统计)但是返回的结果不一样,会在本地事务中产生数据不一致的问题,解决方式是将事务的隔离级别设置为串行化。确保事务1可以多次从一个表中读取到相同的行,在事务1执行期间,禁止其他事务对这个表进行添加、更新、删除操作,可以避免任何并发问题,但性能十分低(表锁)

不可重复读和幻读的区别
不可重复读针对的是一行数据
幻读针对的是整表的数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员劝退师-TAO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值