数据库中三级封锁协议与两段锁协议有区别吗?

数据库中三级封锁协议与两段锁协议有区别吗?,第1张

区别如下:

1、过程不同

三级封锁协议是一部完成封锁的,而后者却要分为两个阶段,耗费时间

2、含义不同

两段锁协议是指每个事务的执行可以分为两个阶段:生长阶段(加锁阶段)和衰退阶段(解锁阶段),三级加锁协议也称为三级封锁协议,是为了保证正确的调度事务的并发 *** 作,事务在对数据库对象加锁,解锁是必须遵守的一种规则.在运用X锁和S锁对数据对象加锁时,还需要约定一些规则

3、功能不同

三级封锁协议除防止了丢失修改和不读“脏”数据外,还进一步防止了不可重复读。后者只是对事务进行时的封锁

扩展资料

一、一级封锁协议

一级封锁协议是:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK)。

一级封锁协议可以防止丢失修改,并保证事务T是可恢复的。使用一级封锁协议可以解决丢失修改问题。

在一级封锁协议中,如果仅仅是读数据不对其进行修改,是不需要加锁的,它不能保证可重复读和不读“脏”数据。

二、二级封锁协议

二级封锁协议是:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后方可释放S锁。

二级封锁协议除防止了丢失修改,还可以进一步防止读“脏”数据。但在二级封锁协议中,由于读完数据后即可释放S锁,所以它不能保证可重复读。

三、三级封锁协议

三级封锁协议是:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。

三级封锁协议除防止了丢失修改和不读“脏”数据外,还进一步防止了不可重复读

参考资料来源:百度百科-三级加锁协议

百度百科-两段锁协议

满足两段锁协议的调度一定是正确的。两段锁协议:一个事务中一旦开始释放锁,就不能再申请新锁了。事务的加锁和解锁严格分为两个阶段,第一阶段加锁,第二阶段解锁。两段锁协议的目的是保证并发调度的正确性。如果所有 *** 作数据库的事务都满足两段锁协议,那么这些事务的任何并发调度策略是可串行性的。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/sjk/9449814.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存