【正确答案】证明 首先以两个并发事务和为例,存在多个并发事务的情形可以类推。
根据可串行化定义可知,事务不可串行化只可能发生在下列两种情况:
(1)事务写某个数据对象A,读或写A;
(2)事务读或写某个数据对象A,写A。
下面称A为潜在冲突对象。
设和访问的潜在冲突的公共对象为。
不失一般性,假设这组潜在冲突对象中均符合情况1。符合情况(2)。
任取,需要Xlock x ①
需要Slock x或Mlock x ②
a.如果操作①先执行,则获得锁,等待。
由于遵守两段锁协议,在成功获得X和Y中全部对象及非潜在冲突对象的锁后,才会释放锁。
这时如果取或Y,已获得w的锁,则出现死锁;否则,在对X,Y中对象全部处理完毕后,才能执行。
这相当于按,的顺序串行执行,根据可串行化定义,和的调度是可串行化的。
b.操作②先执行的情况与①对称。
因此,若并发事务遵守两段锁协议,在不发生死锁的情况下,对这些事务的并发调度一定是可串行化的。
【答案解析】