Database 可恢复计划与不可恢复计划
将附表1视为 将附表2视为 如果A的初始值=100,那么在这两种情况下,A的最终值都将为100,那么第一个计划表如何不可恢复,第二个计划表如何可恢复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的。 *可恢复计划
同样在第一个调度中,事务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
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
R(B) //Failure happens here //and T1 Rollbacks B=B+50 Commit Commit