加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL事务的幻读

发布时间:2020-12-12 00:05:28 所属栏目:MySql教程 来源:网络整理
导读:幻读——PHANTON READ 又称为虚度,是指在一个事务内,两次查询中数据条数不一致 幻读和不可重复读类似,都是在两次查询过程中,区别,幻读是由于其他事务做了插入记录的操作,导致,记录条数有所增加 设置b账户的隔离级别 B账户,由于,前面将事务的隔离级

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

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

这里写图片描述

<h3 id="演示幻读">演示幻读

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

这里写图片描述

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

这里写图片描述

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

这里写图片描述

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

这里写图片描述

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

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

这里写图片描述

<h3 id="验证是否出现幻读">验证是否出现幻读

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

这里写图片描述

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

这里写图片描述

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

这里写图片描述

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

这里写图片描述

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

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

这里写图片描述

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读