事物并发读写的可能:幻影读-不可重复读-脏读

事务并发执行时,不同隔离等级会导致幻影读、不可重复读、脏读现象。幻影读在低于串行化的隔离等级可能发生;不可重复读在低于可重复读的隔离等级可能发生;脏读在低于读已提交的隔离等级可能发生。这些情况分别描述了事务在并发操作中数据一致性的问题。
摘要由CSDN通过智能技术生成

伴随着事务的不同隔离等级,会出现不同的读取现象。ANSI/ISO 标准 SQL 92指出两个事务并发执行,一个事务读数据,另一个事务写数据时可能出现的三种情况。

  1. 幻影读(Phantom reads)
    事务T1进行两次相同的查询,前后2次查询的结果由于事务T2插入了新数据产生了不同的结果。
T1                                                                    T2
select * from account where balance > 100; 
                                                                        insert into account(balance) values(200);
                                                                        commit;
select * from account where balance > 100;
commit;

事务T1由于第二次查询结果多了事务T2新插入的值,和第一次查询时的结果不一致,多出了一条 balance = 200 的数据。
这种情况在低于串行化(Serializable)的隔离等级:可重复的读(Repeatable Read), 读已提交(Read Commited), 读未提交(Read Uncommited)下会发生。

  1. 不可重复读(None-repeatable reads)
    事务T1对同一数据进行两次查询,由于事务T2对相同数据的修改,导致事务T1前后两次查询结
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值