第三节 封锁协议 (1) (2)
在运用X锁和S锁对数据对象加锁时,需要约定一些规则:封锁协议(Locking Protocol),何时申请X
锁或S锁,持锁时间、何时释放,不同的封锁协议,在不同的程度上为并发操作的正确调度提供一定的保证。
常用的封锁协议,三级封锁协议:
1级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放,正常结束(COMMIT),
非正常结束(ROLLBACK)。1级封锁协议可防止丢失修改,在1级封锁协议中,如果是读数据,不需要加锁的,
所以它不能保证可重复读和不读“脏”数据。
2级封锁协议,1级封锁协议+事务T在读取数据R前必须先加S锁,读完后即可释放S锁。2级封锁协议可以
防止丢失修改和读“脏”数据。在2级封锁协议中,由于读完数据后即可释放S锁,所以它不能保证可重复读。
|