可串行化 可串行化调度 ■可串行化调度 ◆调度是可串行化的:多个事务交叉调度的结果与某一个串行调度的结 果相同 ◆DBMS认为事务串行调度的结果保持了数据库的一致性,都是正确的 ◆一个调度如果是可串行化的,系统认为其调度是一个正确的调度,保 持了数据库的一致性 T1 T2 T1 T2 READ(A) READ(A) A=A+A0.1 A=A+A*0.1 WRITE(A) WRITE(A) READ(B) READ(A) B:=B+B02 A=A+10 >并行调度与串行调度的结果相同,因此该调度是可串行的调度 WRITE(A) WRITE(B) READ(B) READ(B) B:=B20 B=B-20 WRITE(B) WRITE(B) 新疆大学软件学院 爱,激情,进取,感恩 2025年2月24日10时24分
新疆大学 软件学院 爱,激情, 进取,感恩 2025年2月24日10时24分 ◼ 可串行化调度 ◆调度是可串行化的:多个事务交叉调度的结果与某一个串行调度的结 果相同 ◆DBMS认为事务串行调度的结果保持了数据库的一致性,都是正确的 ◆一个调度如果是可串行化的,系统认为其调度是一个正确的调度,保 持了数据库的一致性 ➢并行调度与串行调度的结果相同,因此该调度是可串行的调度
可串行化 可串行化调度 T1 T2 T T2 >两个调度的结果不一致,是一个不可串行化的调度。 WRITE(A) READ(B) WRITE(A) B:=B+B*02 A=A+10 WRITE(B) WRITE(A) READ(A) 丢失更新! READ(B) A=A+10 日:=B-20 WRITE(A) READ(B) READ(B) B:=B+日*02 B,=B-20 WRITE(B) WRITE(B) WRITE(B) ■DBMS需要事务调度管理 ◆如果将事务的并发执行完全交给操作系统,则任何一种调度方式都有 可能出现。 ◆有的调度能保持数据库的一致,有的调度却会产生错误的结果。 ◆DBMS必须对事务的运行加以控制,确保交叉调度完毕后的结果与某 串行调度的结果相同,数据库不会出现不一致的状态。 新疆大学软件学院 爱,激情,进取,感恩 2025年2月24日10时24分
新疆大学 软件学院 爱,激情, 进取,感恩 2025年2月24日10时24分 ◼ DBMS需要事务调度管理 ◆如果将事务的并发执行完全交给操作系统,则任何一种调度方式都有 可能出现。 ◆有的调度能保持数据库的一致,有的调度却会产生错误的结果。 ◆DBMS必须对事务的运行加以控制,确保交叉调度完毕后的结果与某 一串行调度的结果相同,数据库不会出现不一致的状态。 丢失更新! ➢两个调度的结果不一致,是一个不可串行化的调度
可串行化 调度表示 @ ■简记符号 ◆NRITE简写为W, ◆READ简写为R, ◆WT凶):事务T写数据库元素X, ◆RT():事务T读数据库元素X, ◆S表示一个调度。 ■调度(事务序列)表示: S=R1(A)R2(A)W1(A)W2(A)R2(B)R1(B)W2(B)W1(B) 新疆大学软件学院 爱,激情,进取,感恩 2025年2月24日10时24分
新疆大学 软件学院 爱,激情, 进取,感恩 2025年2月24日10时24分 ◼ 简记符号 ◆WRITE简写为W, ◆READ简写为R, ◆WT(X):事务T写数据库元素X, ◆RT(X):事务T读数据库元素X, ◆S表示一个调度。 ◼ 调度(事务序列)表示: ◆S = R1(A) R2(A) W1(A) W2(A) R2(B) R1(B) W2(B) W1(B)
可串行化 指令冲突 调度中两个事务发生冲突,必须: ■指令冲突性 >对同一数据对象进行操作 ◆读相同数据:不冲突 ~两个操作指令中有一个是写操作W ●若事务Ti和T都是读取数据A,则Ri(A),Rj(A)指令不发生冲突。 ◆读写相同数据:冲突 ●若事务和可一个是读数据,一个是写数据,则事务的执行顺序是重要 的。Ri(A)和Wj(A)指令是冲突的。 ◆写相同数据:冲突 ●若事务Ti和Tj都是写数据A,则Wi(A)和W(A)指令也是冲突的。 ◆读写不同数据:不冲突 ■示例 S=R1(A)R2(A)W1(A)W2(A)R2(B)R1(B)W2(B)W1(B) ◆T2事务的READ(A)与T1事务的VRITE(A)是冲突指令 ◆T1事务的READ(A)与T2事务的READ(A)指令是不冲突。 新疆大学软件学院 爱,激情,进取,感恩 2025年2月24日10时24分
新疆大学 软件学院 爱,激情, 进取,感恩 2025年2月24日10时24分 ◼ 指令冲突性 ◆读相同数据:不冲突 ⚫ 若事务Ti 和Tj都是读取数据A,则Ri(A),Rj(A)指令不发生冲突。 ◆读写相同数据:冲突 ⚫ 若事务Ti 和Tj一个是读数据,一个是写数据,则事务的执行顺序是重要 的。Ri(A)和Wj(A)指令是冲突的。 ◆写相同数据:冲突 ⚫ 若事务Ti 和Tj都是写数据A,则Wi(A)和Wj(A)指令也是冲突的。 ◆读写不同数据:不冲突 ◼ 示例 ◆S = R1(A) R2(A) W1(A) W2(A) R2(B) R1(B) W2(B) W1(B) ◆T2事务的READ(A)与T1事务的WRITE(A)是冲突指令 ◆T1事务的READ(A)与T2事务的READ(A)指令是不冲突。 调度中两个事务发生冲突,必须: ➢ 对同一数据对象进行操作 ➢ 两个操作指令中有一个是写操作W
可串行化 指令冲突 ■冲突等价: ◆若调度S中属于不同事务的两条操作指令是不冲突的,则可以交换两条指 令的执行顺序,得到一个新的调度S。称调度S与调度S'冲突等价的 conflict equivalent) ■冲突可串行化: ◆若一个调度冲突等价于一个串行调度,则该调度是冲突可串行化的。 ■示例 ◆调度S=R1(A)W1(A)R2(A)W2(A)R1(B)W1(B)R2(B)W2(B) ◆R1(B)与W2(A)指令不冲突,可以交换执行顺序: ◆R1(B)与R2(A)指令不冲突,可以交换执行顺序: ◆N1(B)与W2(A)指令不冲突,可以交换执行顺序; ◆W1(B)与R2(A)指令不冲突,可以交换执行顺序。 ◆调度S'=R1(A)W1(A)R1(B)W1(B)R2(A)W2(A)R2(B)W2(B) 调度$是一个串行调度。 新疆 调度$等价于串行调度$',是冲突可串行化的。 日10时24分
新疆大学 软件学院 爱,激情, 进取,感恩 2025年2月24日10时24分 ◼ 冲突等价: ◆若调度S中属于不同事务的两条操作指令是不冲突的,则可以交换两条指 令的执行顺序,得到一个新的调度S′。称调度S与调度S′冲突等价的 (conflict equivalent)。 ◼ 冲突可串行化: ◆若一个调度冲突等价于一个串行调度,则该调度是冲突可串行化的。 ◼ 示例 ◆调度S= R1(A) W1(A) R2(A) W2(A) R1(B) W1(B) R2(B) W2(B) ◆R1(B)与W2(A)指令不冲突,可以交换执行顺序; ◆R1(B)与R2(A)指令不冲突,可以交换执行顺序; ◆W1(B)与W2(A)指令不冲突,可以交换执行顺序; ◆W1(B)与R2(A)指令不冲突,可以交换执行顺序。 ◆调度S’= R1(A) W1(A) R1(B) W1(B) R2(A) W2(A) R2(B) W2(B) ➢ 调度S’是一个串行调度。 ➢ 调度S等价于串行调度S’,是冲突可串行化的