5.04 Concurrent Control ntroduct i on 并发控制引论
1 5.04 Concurrent Control Introduction 并发控制引论
-concurrent in database System 数据库系统中的并发 ● serial access: 事务的串行访问。 一个事务结束后,另一事务才开始,这种执行 方式叫事务的串行访问,即事务串行执行。 concurrent access:并发访问。 DBMS可以同时接纳多个事务,各事务可在时间 上重叠。这种执行方式叫并发访问
2 一.concurrent in database System 数据库系统中的并发 ⚫ serial access: 事务的串行访问。 一个事务结束后,另一事务才开始,这种执行 方式叫事务的串行访问,即事务串行执行。 ⚫ concurrent access:并发访问。 DBMS可以同时接纳多个事务,各事务可在时间 上重叠。这种执行方式叫并发访问
inter |eaved concurrency 交叉并发 单CPU系统,各事务只能轮流使用CPU, 这种并发方式叫交叉并发。 s imu taneous concurrency 同时并发 多CPU系统,各事务可同时分别占用不同 CPU,这种并发方式叫同时并发
3 interleaved concurrency: 交叉并发 单CPU系统,各事务只能轮流使用CPU, 这种并发方式叫交叉并发。 simultaneous concurrency: 同时并发 多CPU系统,各事务可同时分别占用不同 CPU,这种并发方式叫同时并发
二. aim for concurrency 并发的目的 。改善系统的资源利用率: 一个事务不同执行阶段需要 不同的资源:用CPU,访磁盘,通信, 串行会造成多数资源闲置。 。改善短事务响应时间:如下 事务T1 事务T2 若T1先开始执行,串行,T2要等很长时间,长事 务多等用户可接受,短事务等太久用户不可接受
4 二. aim for concurrency 并发的目的 ⚫ 改善系统的资源利用率: 一个事务不同执行阶段需要 不同的资源:用CPU,访磁盘,通信, 串行会造成多数资源闲置。 ⚫ 改善短事务响应时间:如下 事务T1 事务T2 若T1先开始执行,串行,T2要等很长时间,长事 务多等用户可接受,短事务等太久用户不可接受
三.Problem of( concurrency 事务并发执行,如不加控制会产 生如下问题: 1.lost update丢失更新 Tl T2 时 间 read(x) read(x) x=x+1, write(x); X=2X, write(x); 事务T1对X的更新丢失,与串行执行比较:初值X=4,x终值: 图次序:8;串行T1,T2为10;T2,T1为9。 称wr ite-一write conflict,写一写冲突
5 三.Problem of concurrency 事务并发执行,如不加控制会产 生如下问题: 1.lost update丢失更新 时 间 ⚫ 事务T1对X的更新丢失,与串行执行比较:初值X=4 , x终值: 图次序:8;串行T1,T2为10;T2,T1为9。 ⚫ 称write—write conflict,写一写冲突。 T1 T2 read(x) . . . x:=x+1; write(x); . . . . . . . . . read(x) . . . . . . x:=2x; write(x); . .
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)···;