如果我们在以下调度中使用时间戳排序来进行并发控制:
我的助教说T2、T3、T5是运行的,而T4、T1是回滚的。我不这么认为,请问有专家能帮我们吗?(即在此调度中哪些事务回滚,哪些是完成的?)
更新:所有工作完成后,所有事务都提交。
更新:所有工作完成后,所有事务都提交。
接下来,
数据库中的每个对象都有一个读取时间戳,在读取对象的数据时更新,以及一个写入时间戳,在更改对象的数据时更新。
一开始,X和Y的读取和写入时间戳都为0。
读取请求按以下方式处理:
If TS < W-ts(x) then
reject read request and abort corresponding transaction
else
execute transaction
Set R-ts(x) to max{R-ts(x), TS}
If TS < R-ts(x) or TS < W-ts(x) then
reject write request
else
execute transaction
Set W-ts(x) to TS.
因此,这给我们提供了一个不同于您的TA的答案,即仅T5被回滚并重新启动。
我很想得到纠正,并了解为什么T4和T1被中止并重新启动。
不必用我自己的话来解释,这里有一个有用的MSDN链接,展示了ROLLBACK TRANSACTION及其工作原理。
https://msdn.microsoft.com/en-us/library/ms181299.aspx?f=255&MSPPError=-2147217396
任何问题都可以随时问我。来源:https://technet.microsoft.com/zh-cn/library/ms173763(v=sql.105).aspx