事务异常场景
2023-12-21 22:06:02
事务异常场景
A Critique of ANSI SQL Isolation Levels 论文里的异常图
-
P0 Dirty Write:脏写
-
P1 Dirty Read:脏读
-
P4C Cursor Lost Update:游标丢失更新
-
P4 Lost Update:丢失更新
-
P2 Fuzzy Read:不可重复读
-
P3 Phantom:幻读
-
A5A Read Skew:读偏序
-
A5B Write Skew:写偏序
脏读
读到另一个事务尚未提交的数据。
不可重复读
同一个事务内多次读,读到的数据不同,也就是当前事务读到了其他事务提交的数据。
幻读
事务内多次查询一个范围的记录,返回的记录数不同。
脏写
当前事务回滚了其他事务提交的数据。
T1更新;T2更新;T1回滚,回滚掉了T2的更新
丢失更新
当前事务提交覆盖了其他事务提交的数据。
T2更新;T1更新;T1提交,覆盖掉了T2的更新。
游标丢失更新
本质上就是丢失更新,只是因为发生在游标上,所以称之为游标丢失更新。
读偏序(读倾斜)
t0时刻:T1读取x;
t1时刻:T2更新x,y;T2提交;
t2时刻:T1读取y;
t2 时刻事务T1读取的y是被事务T2修改后的数据,此时已经不是t0时刻事务T1读取x时对应的y值,导致数据不一致。
写偏序(写倾斜)
快照隔离允许写偏序异常发生,两个事务(T1 和 T2)同时读取一个重叠的数据集(例如值 V1 和 V2),同时进行不相交的更新(例如T1更新V1,T2更新V2),最后同时提交,两者都没有看到对方进行的更新。
如果是可串行化隔离级别,这样的异常不可能发生,因为 T1 或 T2 一定有一个先发生,并对另一个可见。
参考
文章来源:https://blog.csdn.net/kaishizhangcheng/article/details/135122735
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!