排他锁(X锁,写锁)
事务T对数据对象A加上X锁,则只允许T读取和修改A,其他事务不能对A加任何类型的锁,直到T释放A上的锁。保证了T释放A上的锁之前,其他事务不能读取修改A。
Xlock A? ? ? ? //加锁
Unlock A? ? ? ? //释放
共享锁(S锁,读锁)
事务T对数据对象A加了S锁,则事务T可以读A,但不能修改A,其他事务也可以读A,但不能修改A,知道释放锁为止。
Slock A? ? ? ? //加锁
Unlock A? ? ? ? //释放
执行过程:1.串行执行? ? ? ? 2.并发执行(分为结果正确的(可串行化调度)和结果不正确的)?
如何判断调度是可串行化的调度?
满足冲突可串行化,一定是可串行化的调度(充分条件,不满足也可能是)
冲突操作是指不同事务对同一个数据的读写操作和写写操作
与
与
不同事务的冲突操作和同一事务的两个操作是不能交换的?
题目:分析并发调度是不是可串行化的调度
思路:串行只有两种顺序。
????????先执行T1后执行T2,得A=3,B=4;
????????先执行T2后执行T1,得B=4,A=5;
? ? ? ? 并发调度结果:B=4,A=3? ? ? ?
????????所以可串行化