MySQL事务的幻读

幻读——PHANTON READ
又称为虚度,是指在一个事务内,两次查询中数据条数不一致
幻读和不可重复读类似,都是在两次查询过程中,区别,幻读是由于其他事务做了插入记录的操作,导致,记录条数有所增加

设置b账户的隔离级别
B账户,由于,前面将事务的隔离级别设置为REPEATABLE READ——可重复读,这种隔离级别可以避免幻读的出现
因此,需要将事务的隔离级别设置的更低,设置为READ COMMITTED

这里写图片描述

演示幻读

B账户,首先,在b账户中开启一个事务,在事务中查询账户的余额

这里写图片描述

A账户,在对a账户操作之前,查询当前账户中的信息

这里写图片描述

对a账户执行添加操作,a账户不用开启事务,直接执行添加操作

这里写图片描述

B账户,当a账户添加成功后,在b账户中,再次查询账户的余额

这里写图片描述

可以看出,第二次查询比第一次查询,多了一条记录
这种情况不是错误的,但是,不符合实际需求,演示完成,将b账户中的事务提交

重新设置b账户的隔离级别
B账户,为了防止出现幻读,将b账户的隔离级别设置为REPEATABLE READ

这里写图片描述

验证是否出现幻读

B账户,重新开启一个事务,查询当前账户的余额

这里写图片描述

A账户,进行添加操纵之前,先查看账户中的信息

这里写图片描述

对a账户执行添加操作,不开启事务,直接执行添加操作

这里写图片描述

B账户,当a账户执行完添加操作,再次,查询当前账户中的信息

这里写图片描述

可以看出,两次查询结果一致,在同一个事务中,两次的查询结果是一致的

因此,事务的隔离级别为REPEATABLE READ,可以避免幻读
最后,使用commit提交当前事务,提交之后,查询账户的余额

这里写图片描述

可以看出,账户的信息已经修改,添加了一条新纪录

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值