——并发事务在读写数据时容易发生数据读写错误,通过锁的方式确保并发事务的正确性

—— 三级封锁协议:

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

—— 一级封锁协议

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

一级封锁协议可以防止丢失修改(因为事务结束前都禁止其它事务进行数据修改),并保证事务T是可恢复的。使用一级封锁协议可以解决丢失修改问题。

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

—— 二级封锁协议

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

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

—— 三级封锁协议

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

三级封锁协议除防止了丢失修改和不读“脏”数据外,还进一步防止了不可重复读。(因为直到事务结束前,由于加了S锁,始终不会有其它事务对其进行修改)

数据库 三级封锁协议相关推荐

  1. 有关数据库的一级、二级、三级封锁协议

    一级封锁协议 一级封锁协议是指,事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放.事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK). 一级封锁协议可防止丢失修改,并保证事 ...

  2. mysql中的两段锁协议和三级封锁协议

    两段锁协议 一个事务中一旦开始释放锁,就不能再申请新锁了.事务的加锁和解锁严格分为两个阶段,第一阶段加锁,第二阶段解锁. 目的 :"引入2PL是为了保证事务的隔离性,保证并发调度的准确性,多 ...

  3. [数据库]数据库三级加锁协议深入理解

    在并发事务的执行时,容易引起数据不一致,有一下几种情况 丢失修改 :两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失 读脏数据 :事务T1对数据D进行修改 ...

  4. 【眼见为实】数据库并发问题 封锁协议 隔离级别

    目录 序 数据库并发的几大类问题 ①丢失修改(Lost Update) ②不可重复读(Non-Repeatable Read) ③幻读(Phantom Read) ④读脏数据(Dirty Read) ...

  5. [数据库]封锁管理和封锁协议

    事务并发操作不合理带来的问题 丢失修改   T1事务修改--T2事务修改,此时T1的修改被覆盖,这叫丢失修改. 读"脏"数据   T1事务修改--T2读数据--T1撤回修改,此时T ...

  6. 数据库三个级别封锁协议

    锁的类型: 基本的封锁类型有两种:排它锁(X锁)和共享锁(S锁).所谓X锁,是事务T对数据A加上X锁时,只允许事务T读取和修改数据A,-所谓S锁,是事务T对数据A加上S锁时,其他事务只能再对数据A加S ...

  7. 封锁 (封锁粒度、封锁类型、封锁协议)

    https://blog.csdn.net/amoscykl/article/details/88784028 在运用X锁和S锁这两种基本封锁对数据对象加锁时,还需要约定一些规则.例如,何时申请X锁或 ...

  8. (数据库系统概论|王珊)第十一章并发控制-第二、三、四节:封锁、封锁协议活锁和死锁

    文章目录 一:封锁 (1)概念 (2)类型 (3)控制方式 二:封锁协议 (1)概念 (2)三级封锁协议 ①:一级封锁协议 ②:二级封锁协议 ③:三级封锁协议 三:活锁和死锁 (1)活锁 (2)死锁 ...

  9. 计算机等级考试数据库三级模拟题3

    1设有关系模式R(A, B, C, D), 其函数依赖集为F={A->D, B->D, C->D }.如果将R分解为R1(A,B,C)和R2(C,D),则该分解是() 同时保持函数依 ...

最新文章

  1. Exchange企业实战技巧(5)配置OWA域名简写
  2. spark hive udf java_【填坑六】 spark-sql无法加载Hive UDF的jar
  3. 暖风熏得游人醉,直把杭州作汴州 | 把将直角当做斜角来发车
  4. 购物车的实现 ajax
  5. oracle 2018 版本,Oracle 最新版本变化 转帖
  6. BZOJ3670 [Noi2014]动物园 【KMP计数】
  7. Word2Vec训练同义词模型
  8. python怎么打开excel文件并处理_python处理excel文件
  9. linux 指定jvm djava.library.path_JVM命令
  10. Android使用ksoap2调用C#中的webservice实现图像上传
  11. 二维码红包系统源代码
  12. 2021年中国DevOps现状调查报告发布!
  13. 项目#npm install #cnpm install #yarn安装包报错
  14. The7主题汉化版-V7.7.0 云典讲堂Wordpress网站模板可视拖拽编辑
  15. Mantis 安装与配置及使用
  16. Matlab导入整个文件夹目录下txt文档到数据库
  17. 洛谷P1867 【Mc生存】经验值
  18. ajax的get json数据格式,jQuery / 用getJSON()方法加载JSON格式数据 - 汇智网
  19. android 手机滤镜
  20. 清华大学计算机学院院庆,清华计算机系2014年校庆系列活动

热门文章

  1. OpenCV-Python (官方)中文教程(部分四)
  2. Scrum立会报告+燃尽图(Beta阶段第二周第六次)
  3. 国内明明有期货公司,为什么那么多人却喜欢做外盘呢
  4. java 地图四色着色算法_趣味地图系列之6 四色定理之我见
  5. 小程序报错:[渲染层网络层错误] Failed to load local image resource /static/logo.png......
  6. 项目一 线性门控开关方法一
  7. 一文读懂开源项目 OpenHarmony2.0 开源项目 OpenHarmony 是什么
  8. Excel中CTRL+D的别样用法 隔行和隔列向下填充示例
  9. coursera-dl 报错 AttributeError (‘HTMLParser’ object has no attribute ‘unescape’)
  10. 《iOS移动开发从入门到精通》图书连载4:iOS应用的生命周期