Database 此事务可序列化吗?

Database 此事务可序列化吗?,database,transactions,Database,Transactions,根据以下事务计划,我必须确定它是否可序列化: T1| T2 ----------------------- R(A)| | R(A) R(B)| | W(B) rollback| | W(A) | commit 问题的解决方案是: 由于T1在T1结束之前读取B,T2在T1结束之前写入B,因此不可序列化 然而,据我所知,可串行化的要求是: 一组提交事务上的可序列化调度是一个调度,其对任何一致数据库实例的

根据以下事务计划,我必须确定它是否可序列化:

      T1| T2
-----------------------
    R(A)|
        | R(A)
    R(B)| 
        | W(B)
rollback|
        | W(A)
        | commit
问题的解决方案是: 由于T1在T1结束之前读取B,T2在T1结束之前写入B,因此不可序列化

然而,据我所知,可串行化的要求是: 一组提交事务上的可序列化调度是一个调度,其对任何一致数据库实例的影响都保证与一组提交事务上的某个完整串行调度的效果相同


因为T1只读取和中止,所以它对数据库实例没有任何影响。那么,解决方案是错误的,还是我遗漏了什么?

我认为这取决于图表的语义。T1下的动作是按时间顺序进行的;T2下的动作是按时间顺序进行的;但是T1和T2中动作的相对位置是否由图表固定?如果不是,那么可能是T1.R(B)出现在T2.W(B)之后,在这种情况下,T1会看到DBMS的不一致视图,除非T1.R(A)和T1.R(B)都出现在T2.W(A)之后-如果两侧可以相对滑动,则可能发生这种情况。如果T1.R(B)和T2.W(B)的相对时间由图上的位置固定,则事务是可序列化的。