假设三个事务T1 T2 T3的操作按下列顺序调度执行:R1A; W2B; R3C; R1C; W2A; R3B; W1C。1 该调度冲突可串行化吗?若是给出它的等价串行调度;若不是说明原因。2 假设事务按两阶段封锁协议执行上述调度执行时会发生什么问题?说明原因
(1) 该调度是冲突可串行化的。可以将其等价转化为串行调度: T1:R1(A); R1(C); W1(C); T2:W2(B); W2(A); T3:R3(C); R3(B); 其中,T1、T2、T3的操作按照事务编号依次执行,与原调度具有相同的读写关系,因此与原调度等价。
(2) 在两阶段封锁协议下,该调度会发生死锁。具体来说,T1在执行W1(C)时持有了C上的写锁,T3在执行R3(C)时持有了C上的读锁,T2在执行W2(A)时需要获得A上的写锁,但此时A已被T1持有,因此T2被阻塞。而T1在执行W1(C)后需要获得B上的写锁,但此时B已被T2持有,因此T1也被阻塞。因此,T1、T2之间和T2、T3之间形成了死锁。
原文地址: https://www.cveoy.top/t/topic/e0mP 著作权归作者所有。请勿转载和采集!