如果我们在以下调度中使用时间戳顺序进行并发控制:

我的助教说T2,T3,T5在运行,T4,T1是回滚。我觉得是假的。有专家能帮我们吗?(也就是说,在本附表中,哪个事务回滚和哪个事务回滚完成?
更新:完成所有工作后的所有事务,提交。
发布于 2015-04-19 12:41:29
一般来说,在默认情况下,读者不会阻止作者,而作者也不会阻止读者。
写入行的第一个会话持有锁,直到发出commit或rollback,其他会话将被该锁阻止写入,但仍然可以读取。
基于此
但是,所有这些都不应该成为回滚的原因,并且假设不发出显式提交或回滚。
发布于 2015-04-23 17:59:58
问题是,正如@DavidAldridge所指出的,“读者不阻止作者,作家不阻止读者”。事务3将等待transacion 1,事务5将等待事务1和事务3,它们可以等待很长时间,等待n秒钟,也可以完全不等待,这取决于为DB设置的参数。在甲骨文中,这就是它的工作方式。
伙计们,既然这是个竞赛题,我会假设逻辑,然后继续。
这很大程度上是关于解释和坚持所给予的东西。这里给出的信息是:用于并发控制的时间戳排序。然后他给了我们: T1,T2 to T5。然后我假设T1优先,然后是T2等等,因为事务总是被序列化的:一个接着一个,基于它们的时间戳。我确实认为,为了让人假设'T5 Read(x)‘是第一个事务,仅仅因为文本的处理方式是添加了不存在的信息。上面写着时间戳排序,给你T1,T2.逻辑上说,一个接一个。没有事务会回滚,它们只是等待,这不仅仅是因为一个事务可能持有一个锁,而另一个事务也试图获得自动回滚的锁。在Oracle中,只有在死锁情况下,事务才会自动回滚。由于情况似乎并非如此,因此不存在回滚。
发布于 2015-04-27 13:40:07
这里有一个有用的MSDN链接,它向您展示了ROLLBACK事务及其工作方式,而不是试图用我自己的话解释它。
https://msdn.microsoft.com/en-us/library/ms181299.aspx?f=255&MSPPError=-2147217396
任何问题都可以问我。
https://stackoverflow.com/questions/29722337
复制相似问题