知识点:
事务调度的准则:
(1)一组事物的调度满足:包含所有事物的操作指令,且指令顺序不变
(2)并行调度必须保证:可串行化,将所有可能的串行调度结果推演一遍,对于某个具体的并行调度再执行一遍,看看结果是否相同 实质就是给俩调度T1,T2,先看T1 - T2和T2 - T1的结果,再看题目中给出的结果,比较是否相同
封锁:
X锁(排他锁),某事物对数据对象上锁后,可读可改,其他事物不能碰这个对象了
S锁(共享锁),某事物对数据对象上锁后,可读不可改,其他事物可添S,不能添X
表示方法:上锁Slock()释放锁Unlock() 看题目写
封锁协议
一级:写前加写锁,事物结束释放写锁,防止丢失修改
二级:写前加写锁,读前加读锁,读完释放读锁,事物结束释放写锁,防止丢失修改和读脏数据
三级:写前加写锁,读前加读锁,事务结束释放各锁,防止丢失修改,读脏数据,不可重复读
只要遵循三级封锁协议,无论事物如何交叉并行,都是可串行化的调度
两段锁协议:要加锁就一直加,要释放就一直释放
调度的结果如下:
不满足可串行化,因此调度方法不正确
看执行顺序,不能就等待,我们先给T1的X上锁,然后给T2的X上锁,后续T2的X由于没解锁,因此需要等待,可画出图像