问答题
如图所示给出的是一个调度的事件序列。该调度包含T1,T2,…,T2等12个事务,A,B,…,H为数据库中的数据项,假定“读i”(i=A,B,…,H)成功,则获得i上的一个S锁,而“修改i”成功时,则将锁升级为X锁。又假定所有锁都保持到事务结束,那么,在时刻t36是否存在死锁?并分析哪些事务处于等待另一个事务的状态。
时间 |
事务 |
操作 |
时间 |
事务 |
操作 |
t1 |
T1 |
读A |
t19 |
T9 |
修改G |
t2 |
T2 |
读B |
t0 |
T8 |
读E |
t3 |
T1 |
读C |
t1 |
T7 |
COMMIT |
t4 |
T4 |
读D |
t2 |
T9 |
读H |
t5 |
T5 |
读A |
t3 |
T3 |
读G |
t6 |
T2 |
读E |
t4 |
T10 |
读A |
t7 |
T2 |
修改E |
t5 |
T9 |
修改H |
t8 |
T3 |
读F |
t6 |
T6 |
COMMIT |
t9 |
T2 |
读F |
t27 |
T11 |
读C |
t10 |
T5 |
修改A |
t28 |
T12 |
读D |
t11 |
T1 |
COMMIT |
t29 |
T12 |
读C |
t12 |
T6 |
读A |
t30 |
T2 |
修改F |
t13 |
T5 |
ROLLBACK |
t31 |
T11 |
修改C |
t14 |
T6 |
读C |
t32 |
T12 |
读A |
t15 |
T6 |
修改C |
t33 |
T10 |
修改A |
t16 |
T7 |
读G |
t34 |
T12 |
修改D |
t17 |
T8 |
读H |
t35 |
T4 |
读G |
t18 |
T9 |
读G |
t36 |
1 |
1 |
一个调度的事件序列