问答题
如图所示给出的是一个调度的事件序列。该调度包含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 |
一个调度的事件序列