Database 可恢复计划与不可恢复计划

Database 可恢复计划与不可恢复计划,database,transactions,schedule,serializable,Database,Transactions,Schedule,Serializable,将附表1视为 将附表2视为 如果A的初始值=100,那么在这两种情况下,A的最终值都将为100,那么第一个计划表如何不可恢复,第二个计划表如何可恢复 同样在第一个调度中,事务T1在事务T2提交后回滚A的值。那么A的提交值也会回滚到100吗?同样在第一个计划中,事务T1在事务T2提交A后回滚A的值。那么A的提交值也会回滚到100吗? 是,它将回滚到其初始值 可恢复的计划是 其中,对于每对事务Ti和Tj,Tj先前读取数据项 由Ti编写,Ti的提交操作出现在提交操作之前 Tj的。 *可恢复计划

将附表1视为

将附表2视为

如果A的初始值=100,那么在这两种情况下,A的最终值都将为100,那么第一个计划表如何不可恢复,第二个计划表如何可恢复


同样在第一个调度中,事务T1在事务T2提交后回滚A的值。那么A的提交值也会回滚到100吗?

同样在第一个计划中,事务T1在事务T2提交A后回滚A的值。那么A的提交值也会回滚到100吗?

是,它将回滚到其初始值

可恢复的计划是 其中,对于每对事务Ti和Tj,Tj先前读取数据项 由Ti编写,Ti的提交操作出现在提交操作之前 Tj的。

*可恢复计划=未限制事务的回滚*


*Non-recoverable schedule=提交事务的回滚*

根据我的说法,对于第一个不可恢复的调度,我们应该无法获取原始值A(即100),因为T2在A=70时提交A的值,但您说它将回滚到100。我很困惑:(@Xylene23当事务T1提交时意味着它将A和B的值写入硬盘,但根据您的条件,它在提交前失败,因此原始值仍然与前一个值相同。然而,在T2中,它被提交,但原子性不存在,这是任何事务的重要部分,因此它尚未在硬盘中提交磁盘,因为它读取A的脏值。希望有帮助 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
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