可恢复与不可恢复计划
Recoverable vs Non recoverable schedule
将附表 1 视为
T1 T2
R(A)
A=A-50
W(A)
R(A)
A=A+20
W(A)
Commit
R(B)
//Failure happens here
//and T1 Rollbacks
B=B+50
Commit
将附表 2 视为
T1 T2
R(A)
A=A-50
W(A)
R(A)
A=A+20
W(A)
R(B)
//Failure happens here
//and T1 Rollbacks
B=B+50
Commit
Commit
如果 A 的初始值 = 100 那么在这两种情况下 A 的值最终都是 100 那么第一个计划是不可恢复的而第二个是可恢复的?
同样在第一个调度中,事务 T1 在事务 T2 提交后回滚 A 的值。那么A的committed值会不会也回滚到100呢?
同样在第一个调度中,事务 T1 在事务 T2 提交后回滚 A 的值。那么A的committed值会不会也回滚到100呢?
是的,它将回滚到其初始值
可恢复的计划是
其中,对于每一对事务 Ti 和 Tj,使得 Tj 先前读取一个数据项
Ti写的,Ti的commit操作出现在commit操作之前
Tj .
* 可恢复计划 = 回滚未提交的事务 * 和
* 不可恢复的计划 = 已提交事务的回滚 *
将附表 1 视为
T1 T2 R(A) A=A-50 W(A) R(A) A=A+20 W(A) CommitR(B) //Failure happens here //and T1 Rollbacks B=B+50 Commit
将附表 2 视为
T1 T2 R(A) A=A-50 W(A) R(A) A=A+20 W(A)R(B) //Failure happens here //and T1 Rollbacks B=B+50 Commit Commit
如果 A 的初始值 = 100 那么在这两种情况下 A 的值最终都是 100 那么第一个计划是不可恢复的而第二个是可恢复的?
同样在第一个调度中,事务 T1 在事务 T2 提交后回滚 A 的值。那么A的committed值会不会也回滚到100呢?
同样在第一个调度中,事务 T1 在事务 T2 提交后回滚 A 的值。那么A的committed值会不会也回滚到100呢?
是的,它将回滚到其初始值
可恢复的计划是 其中,对于每一对事务 Ti 和 Tj,使得 Tj 先前读取一个数据项 Ti写的,Ti的commit操作出现在commit操作之前 Tj .
* 可恢复计划 = 回滚未提交的事务 * 和
* 不可恢复的计划 = 已提交事务的回滚 *