可恢复与不可恢复计划

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 .

* 可恢复计划 = 回滚未提交的事务 *

* 不可恢复的计划 = 已提交事务的回滚 *