本节简单介绍了与并发相关的现象(Phenomenon)和异常(Anomalies)。
ANSI SQL标准定义的现象
脏写
P0 – (Dirty Write)
例 : w1(x) w2(x) (c1 or a1)
脏读
P1 – Dirty Read
例 : w1(x) r2(x) (c1 or a1)
不可重复读
P2 – Fuzzy or Non-Repeatable Read
例 : r1(x) w2(x) (c1 or a1)
幻读
P3 – Phantom
例 : r1(P)w2(y in P) (c1 or a1)
这里的P表示逻辑术语谓词(Predicate)
使用更严格的定义来描述P3:
A3 – Phantom
例 : r1(P) w2(insert y to P) c2 r1(P) c1
事务T1执行查询,返回满足谓词P的结果集,T2插入满足P的数据,T1再次执行查询,发现结果集出现变化。
非标准的异象
丢失更新
P4 – Lost Update
例 : r1(x) w2(x) w1(x) c1
读偏序
A5A – Read Skew
例 : r1(x)w2(x)w2(y)c2r1(y) (c1 or a1)
写偏序
A5B – Write Skew
例 : r1(x)r2(y)w1(y)w2(x) (c1 and c2 in some order)
只读事务(引起的)异象
A6 – Read-Only Transaction Anomaly
例 : r2(x) r2(y) r1(x) w1(x) c1 r3(x) r3(y) c3 w2(y) c2