o 2.dirty Read 读脏数据 Tl T2 read(t[x]); 时 write(t[x],t[y]); 间 read(t[y]); (rollback) 由一个事务读取另一个事务尚未提交的数据引起,如T 对元组t的x.y更新,与T2两次读;T1改工资T2统计;T 卷回出现的问题。称read-write conflict,读写冲突 6
6 ⚫ 2.dirty Read 读脏数据 时 间 ⚫ 由一个事务读取另一个事务尚未提交的数据引起,如T1 对元组t的x.y更新,与T2两次读;T1改工资T2统计;T1 卷回出现的问题。称read-write conflict,读写冲突。 T1 T2 . . . . . . write(t[x],t[y]); . . . . . . (rollback) read(t[x]); . . . . . . read(t[y]); . . . . .
上图引发问题: T1对元组t的X.Y更新, T2并发读t[x],t[y], 且x在更新前,y于更新后, 故x,y是不一致的数据。 ● T2计算某种聚合函数 (如AVG)时,如统 计平均工资。T1并发修改工资项,则二 者并发引发的问题。 ● 如T1被卷回,则T2读的y是一个不存在的 值。 ●read-write confl ict
7 上图引发问题: ⚫ T1对元组t的X.Y更新, T2并发读t[x],t[y], 且x在更新前,y于更新后, 故x,y是不一致的数据。 ⚫ T2计算某种聚合函数(如AVG)时,如统 计平均工资。T1并发修改工资项,则二 者并发引发的问题。 ⚫ 如T1被卷回,则T2读的y是一个不存在的 值。 ⚫ read-write conflict
3.unrepeatable read 读值不可复现 时 Tl T2 间 read(x); write(x); read(x); T1并未修改x值,但两次读出值不一致,T1,2串行不 会出现这种问题。 读值不可复现,也是读-写冲突所致
8 3.unrepeatable read 读值不可复现 时 间 ⚫ T1并未修改x值,但两次读出值不一致,T1,T2串行不 会出现这种问题。 ⚫ 读值不可复现,也是读-写冲突所致。 T1 T2 . . . read(x); . . . . . . read(x); . . . . . . write(x); . . . . .
四.并发控制的正确性准则 1.schedule调度 o I DBMS中,经常有多个事务并发 执行,每个事务均含有若干有序 操作。这些操作由系统统一安排执行顺序。 安排原则:要各事务操作交叉执行,以 充分利用系统资源;又要避免访问冲突 一个调度s就是对并发的n个事务的所有 操作的顺序的一种安排
9 四.并发控制的正确性准则 1.schedule调度 ⚫ DBMS中,经常有多个事务并发 执行,每个事务均含有若干有序 操作。这些操作由系统统一安排执行顺序。 ⚫ 安排原则:要各事务操作交叉执行,以 充分利用系统资源;又要避免访问冲突。 ⚫ 一个调度s就是对并发的n个事务的所有 操作的顺序的一种安排
。一个调度可以表达成对并发 的n个事务中的操作,统一安 排的一个操作序列。 ●Write→w o Read→R ● 其下标则表示所属事务的编号。 ● 如值不可复现图中两事务并发,视为一 个调度: ●S=·R1(X)·W2(x)·R1(x) 10
10 ⚫ 一个调度可以表达成对并发 的n个事务中的操作,统一安 排的一个操作序列。 ⚫ Write w ⚫ Read R ⚫ 其下标则表示所属事务的编号。 ⚫ 如值不可复现图中两事务并发,视为一 个调度: ⚫ S= ···R1(X)···W2(x)···R1(x)···;