三级封锁协议与两段锁协议互相遵循么?
发布网友
发布时间:2022-04-27 12:26
我来回答
共1个回答
热心网友
时间:2022-04-09 11:15
一级封锁协议: 事务T在修改数据R之前必须先对其加X锁, 直到事务结束才释放。但是如果只是读数据,不需加锁,因此会造成读脏数据的情况
二级封锁协议: 一级封锁协议加上事务T在读取数据R之前必须先对其加S锁, 读完后即可释放可防止读脏数据, 丢失修改不能保证可重复读
所谓的脏数据,就是源系统中的数据在给定范围之外无效的数据。或是数据格式非法,业务逻辑含糊不清等,皆可称为脏数据。
*封锁协议是:1级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。3级封锁协议除防止了丢失修改和不读'脏'数据外,还进一步防止了不可重复读。
两段锁协议:是指所有的事务必须分两个阶段对数据项加锁和解锁。即事务分两个阶段,第一个阶段是获得封锁。事务可以获得任何数据项上的任何类型的锁,但是不能释放;第二阶段是释放封锁,事务可以释放任何数据项上的任何类型的锁,但不能申请。
基本的封锁类型有两种:排他锁(exclusive locks,简称X锁)和共享锁(share locks,简称S锁)
遵守*封锁协议,必然遵守两段协议。
知只是充分条件而非充要条件。