数据库-并发控制

46 阅读1分钟

Tl T2 T3 是如下的 3 个事务:****

Tl A : = A + 2 ;

T2 A : = A * 2 ;

T3 **A : = A 2 ; ( A A*A **)******

A 的初值为 0 ****

( l )若这 3 个事务允许并行执行,则有多少可能的正确结果,请一一列举出来。****

A 的最终结果可能有 2 4 8 16 。因为串行执行次序有 Tl T2T3 Tl T3T2 T2T1T3 T2T3Tl T3T1T2 T3T2 Tl 。对应的执行结果是 16 8 · 4 · 2 · 4 · 2

( 2 )请给出一个可串行化的调度,并给出执行结果****

**答:

image.png

最后结果 A 16 ,是可串行化的调度。****

( 3 )请给出一个非串行化的调度,并给出执行结果。****

**答:

image.png

最后结果 A 0 ,为非串行化的调度。

( 4 )若这 3 个事务都遵守两段锁协议,请给出一个不产生死锁的可串行化调度。****

**答:

image.png

( 5 )若这 3 个事务都遵守两段锁协议,请给出一个产生死锁的调度。****

**答:

image.png