数据库中的回滚和调度?

Mar*_*zhi 11 sql database oracle database-design rollback

如果我们在以下调度中使用Timestamp Ordering进行并发控制:

在此输入图像描述

我的TA说T2,T3,T5是Run和T4,T1是Rollback.我认为这是错误的.任何专家都可以帮助我们?(即,在此计划中哪个事务回滚和哪一个已完成?

更新:完成所有工作后的所有事务,提交.

Dav*_*dge 4

一般来说,默认情况下,读取器不会阻止写入器,写入器也不会阻止读取器。

第一个写入行的会话将持有该行的锁,直到发出提交或回滚,其他会话将被该锁阻止写入该行,但仍可以读取该行。

基于此

  • T1 可以 write(y),因为没有其他会话写入 y,然后持有 y 的锁
  • T2 从不写入,因此永远不会被阻塞。
  • T3 在 T1 之后尝试写入(y),因此被阻止。
  • T4 写入(x),T5 读取 x 不会对此产生影响。
  • T5 尝试写入 y 的尝试被 T1 持有的锁阻止。

不过,这些都不应成为回滚的原因,并且假设没有发出显式提交或回滚。