一级、二级和三级封锁协议简介

在运用X锁和S锁对数据对象加锁时,还需要约定一些规则 ,例如何时申请X锁或S锁、持锁时间、何时释放等。称这些规则为封锁协议(Locking Protocol)。对封锁方式规定不同的规则,就形成了各种不同的封锁协议。不同的封锁协议,在不同的程度上为并发操作的正确调度提供一定的保证。

一、一级封锁协议

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

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

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

二、二级封锁协议

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

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

三、三级封锁协议

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

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

上述三级协议的主要区别在于什么操作需要申请封锁,以及何时释放。

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Network/basis/

时间: 2024-10-30 19:05:36

一级、二级和三级封锁协议简介的相关文章

数据库查询-三级联动的二级和三级要用查询到的数据来关联

问题描述 三级联动的二级和三级要用查询到的数据来关联 如图所示,gc_parent_id=0的商品是第一级,后面二三级的gc_parent_id等于他前一级的id,然后我在网上找了个三级联动的JS代码,我的核心代码如图: 我本来的想法是循环套循环,每次根据查询出来上一级的id来查询下一级的id和name,然后套用三级联动JS代码的写法来写,但是出来的效果是所有的东西都在一起: : 想问问各位该怎么做....实在是没辙了啊!最头疼的地方在于那个.=把所有查询出来的东西都连在一起了! help!!!

yii2中dropDownList实现二级和三级联动写法

整理文档,搜刮出一个yii2中dropDownList实现二级和三级联动写法的代码,稍微整理精简一下做下分享. 视图页面: <?php $form = ActiveForm::begin([ 'action' => ['index'], 'method' => 'get', ]); ?> <!--一级目录--> <?= $form->field($model, 'cocate_id')->dropDownList(Helper::courseCateM

如何利用二级、三级页面来推动首页关键词的排名

大家好,今天我将继续介绍关于title的写法,同时在本节中将会涉及到网页的布局,大家如果有看不懂课程的地方可以留待以后有一定基础知识之后再来仔细品味一下,昨天我们说到首页的title.description以及keywords的写法,现在我们就来了解一下如何用二级甚至三级.四级页面来推动关键词的排名. 首先做推动排名的前提则是需要在首页找到你需要排名的关键词,并且有恰当的链接,然后通过文章的形式来带动首页的这个关键词在搜索引擎的排名,而文章的形式可以是行业内的一些技术讲解,也可以是行业内的新闻,

《趣学CCNA——路由与交换》一第2章 TCP/IP协议2.1 TCP协议简介

第2章 TCP/IP协议 趣学CCNA--路由与交换 在上一章,我们郑重其事地介绍了无聊的OSI七层参考模型,并浓墨重彩地讲述了其中每一层负责提供的功能.OSI模型出身名门.条理清晰,只有一个"小小的"缺点,那就是一直没人太拿它当回事儿.所以,如果对它太认真,你就败了. 我们是有职业精神的,因此在介绍OSI模型时反复强调了这个模型是如何地曲高和寡.我们在上一章中花大篇幅介绍OSI模型有三个目的:一是延续各类技术教材的惯例,以免将本书作为技术开蒙读物的读者在与别人讨论技术问题时,因全然不

orm-在Hibernate中配置了SessionFactory,是不是就已经启动了一级二级缓存功能?

问题描述 在Hibernate中配置了SessionFactory,是不是就已经启动了一级二级缓存功能? 一级缓存在什么时候启用? 二级缓存在什么时候启用? 解决方案 一级缓存默认已经启用 二级缓存默认关闭(要开启二级缓存得自己手动配置然后再启用) 可参见:http://blog.csdn.net/hekewangzi/article/details/45873271 解决方案二: Hibernate一级二级缓存Hibernate的一级和二级缓存hibernate二级缓存配置 解决方案三: 二级

《趣学CCNA——路由与交换》——2.2节UDP协议简介

2.2 UDP协议简介趣学CCNA--路由与交换TCP是一个面向连接的协议,而UDP则正好相反,它是一个"无连接的"协议.这意味着,您不会在这一节读到关于握手流程的那些复杂的内容,可以省下一些时间和精力用来刷微博.微信.但是,TCP费那么大工夫去握手可不是因为它空虚寂寞觉得冷,这一切都是为了保障接收方能够收到自己发送的数据.UDP省掉了这个过程,这也就说明,UDP 并不关心对方能不能收到它发送的信息.因此,如果说TCP发送出去的数据是能够随时查询投递状态的快递包裹或者挂号信,那么UDP

《趣学CCNA——路由与交换》——2.1节TCP协议简介

2.1 TCP协议简介趣学CCNA--路由与交换上一章介绍传输层的时候曾经提到过,传输层的某些协议是"面向连接"的,所谓面向连接是指这个协议可以追踪数据的传输状态,并且可以在传输失败的时候对数据进行重传 ,而本节要进行介绍的TCP 协议就是面向连接的协议. TCP 协议的全称是"传输控制协议",这种协议可以给上层应用提供一种可靠的传输机制 .用人话来说,就是通过这家快递公司发件,它可以通过追踪包裹的实时状态来监控投递进度,就算对方因为某种原因没有收到,它们也会再次上

开源软件许可协议简介

很多软件开发者和设计者都有将自己的软件作品以开源的形式公之于众的想法.他们希望其他人也可以分享自己的作品,使用自己的作品.开源社区之所以能蓬勃发展就是因为人们有这样的愿望.开源软件如此的丰富,任何你能想到的应用领域里都能找到它们的身影. 大部分的设计人员都已经把使用开源软件和开源代码作为日常工作不可缺少的一部分了(WordPress, Drupal 和许多其它的内容管理系统都是开源软件). 但是很多的软件作者和设计者都对各种不同的开源许可协议的内容和含义不甚了了.当你选择了某种开源许可协议时,你

【HIBERNATE框架开发之九】HIBERNATE 性能优化笔记!(遍历、一级/二级/查询/缓存、乐观悲观锁等优化算法)

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/hibernate/825.html 1.   循环分页或者循环进行部分读取处理数据的时候,使用 session.clear() ;   2.    对应1+N(N+1)问题使用如下解决方式: 1): 使用createCriteria进行查询(join fetch) 2):HQL -> join fetch 3): 使用@fetch设置LAZ