并发事务执行。
T1 T2 ================= R(A) R(A) A=A+100 W(A) A=A+200 W(A) commit commit
这里最初A = 100。最终提交后A的价值是多少? 注意:上述交易计划同时执行(Inter-leaved),如图所示。
答案 0 :(得分:1)
取决于锁定策略,有两种可能性:
使用乐观锁定,T2将向DB提交值300,T1将获得乐观锁定异常
使用行或表级别锁定并假设T2首先获得锁定,然后A = 400。这是因为T2首先获得锁定,然后T1将阻塞直到T2完成。 T2因此提交A = 300。 T1然后读取该值并提交A = 400。显然,在这种情况下,操作不会如图所示进行交错。
还有第三种可能性,T1可以先获得锁定。在这种情况下,T1不能在T2之后提交,因此根据你的图表它是不可能的。