oracle数据库脏读DirtRead

客户端A和客户端B分别取请求数据量为1000w的数据库,A访问的时间为9点00分,并且Select查询所有数据需要10分钟直到9点10分才可以返回结果。客户端B在9点05分的时候去Update数据库所有数据,并且commit成功。请问客户端A查询的数据是客户端Update前的还是Update之后的数据?

答案是更新之前的。

oracle或者是mysql都有一个一致性读原则,在A客户端访问的时候看到的数据库表是什么数据 此时它要查询的就是什么数据。当客户端B去update数据库的时候,会把原来的数据放到一个undo的地方,如果客户端B commit成功失败,就会去undo的地方把原先的数据rollback,那么如果B提交成功了 客户端A在9点10分的时候回去undo找是不是想要的数据,如果不是则会报一个经典的数据库异常snap shot too old(快照太旧异常),反之如果找到原先的数据则返回给客户端A

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值