数据库的一级、二级、三级封锁协议

news2025/1/12 20:38:37

0、内容补充

X锁(排他锁、写锁)

S锁(共享锁、读锁)

一、一级封锁协议

        一级封锁协议是指,事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK).
        一级封锁协议可防止丢失修改,并保证事务T是可恢复的。
        在一级封锁协议中,如果仅仅是读数据而不对其进行修改,是不需要加锁的,所以它不能保证可重复读和不读“脏”数据。

丢失修改:不加锁修改之后被其它事务修改了
写:加X锁->修改数据R->成功或失败->释放X锁
读:不加锁,导致读到别的事务未提交数据,且多次读结果不一致

二、二级封锁协议

        二级封锁协议是指,在一级封锁协议基础上增加事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。
        二级封锁协议除防止了丢失修改,还可进一步防止读“脏”数据。
        在二级封锁协议中,由于读完数据后即可释放S锁,所以它不能保证可重复读

写:同一级封锁协议
读:加S锁->读数据R->读完释放S锁,不会读到别的事务未提交的数据,但多次读会结果还是会不一致
注:在数据R加了X锁之后,不能再加其它锁(其它事务的X锁和S锁);在数据R加了S锁之后,其它锁还能加S锁,但不能加X锁

三、三级封锁协议

        三级封锁协议是指,在一级封锁协议的基础上增加事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。
        三级封锁协议除了防止丢失修改和读“脏”数据外,还进一步防止了不可重复读。

写:同一级封锁协议
读:加S锁->读数据R->再读数据R->事务完成->释放S锁,多次读结果一致

四、不同级别的封锁协议和一致性保证

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/24659.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kotlin Flow啊,你将流向何方?

前言 前边一系列的协程文章铺垫了很久,终于要分析Flow了。如果说协程是Kotlin的精华,那么Flow就是协程的精髓。 通过本篇文章,你将了解到: 什么是流?为什么引进Flow?Fow常见的操作为什么说Flow是冷流? 1. 什么是流 …

你必须要了解的国产数据库——OceanBase

文章目录前言1、什么是OceanBase?2、OceanBase名字的由来3、OceanBase 发展历程4、OceanBase优势5、OceanBase的核心特性6、应用场景7、未来展望前言 一直以来,外国企业在数据库领域保持高市占率,主流的数据库系统大多数都是使用外国的产品。…

读文章笔记-OSSFS-DD

读文章笔记-OSSFS-DD文章代码文章主要贡献内容公式(5)(6)的详细推倒对比其他7种算法算法思考文章 Online Scalable Streaming Feature Selection via Dynamic Decision 代码 https://github.com/doodzhou/OSFS 文章主要贡献 将特征分成选择,丢弃和延迟。提出基…

《第一行代码》核心知识点:Android的脸面之UI控件

《第一行代码》核心知识点:Android的脸面之UI控件前言三、Android的脸面之UI控件3.1 常用控件介绍3.1.1 TextView3.1.2 Button3.1.3 EditText3.1.4 ImageView3.1.5 ProgressBar3.1.6 AlertDialog3.1.7 ProgressDialog3.2 四种基本布局介绍3.2.1 线性布局3.2.2 相对布…

更强悍 更智能!飞凌嵌入式FET3588-C核心板震撼发布!

为提升AIoT领域终端设备的处理能力以及智能化程度,飞凌嵌入式与瑞芯微强强联手,正式推出FET3588-C核心板! 1、国芯之光 品质之选 FET3588-C核心板基于Rockchip新一代旗舰RK3588处理器开发设计,采用先进的8nm制程工艺, …

【软考软件评测师】第三十一章 操作系统综合知识

【软考软件评测师】第三十一章 操作系统综合知识 第三十一章 操作系统综合知识【软考软件评测师】第三十一章 操作系统综合知识第一部分 知识点集锦1.嵌入式操作系统1)可裁剪性2)实时性3)统一的接口4)弱交互性5)更好的…

EasyExcel使用详解与源码解读

EasyExcel使用详解1、EasyExcel简单介绍64M内存20秒读取75M(46W行25列)的Excel(3.0.2版本)2、EasyExcel和POI数据处理能力对比3、使用EasyExcel读写Excel、web上传/下载3.1、写EXCEL3.2、读EXCEL3.3、web上传、下载4、EasyExcel源码解读5、总结1、EasyEx…

AdsPower VS Dolphin,哪款指纹浏览器性价比更高?

现在指纹浏览器已经成为了跨境人必备的账号安全工具,市面上的指纹浏览器也非常多,但其实真正专业的寥寥无几。现在市场上比较出名的浏览器有AdsPower、Dolphin、multilogin。为了比较出AdsPower和Dolphin功能上的差异,龙哥特地去下载使用了这…

三、nginx设置浏览器缓存[expires]

一、浏览器缓存 解释:浏览器缓存极大缓解了带宽压力,提高了用户体验。 访问页面-查看是否有缓存,如果没有过期,直接击中缓存,不向服务器发送请求访问页面-查看是否有缓存,如果过期,向服务器发送…

如何给async await批量添加try…catch?

如何给async await批量添加try…catch?async和await是什么?如何给async await批量添加try…catchbabel插件的实现思路插件的基本格式示例寻找await节点向上查找 async 函数添加用户选项babel插件的安装使用其他参考资料async和await是什么? …

深紫色粉末BHQ-1 NHS,916753-61-2,NHS修饰是合成后与一个伯氨基的共轭

英文名称:BHQ-1 NHS CAS:916753-61-2 外观:深紫色粉末 分子式:C30H31N7O7 分子量:601.62 储存条件:-20C,避光避湿 结构式: 凯新生物产品简介: NHS修饰是合成后与一…

程序员必知必会网络传输之TCP/IP协议族,共864页的详解文档让你原地起飞!

我们现实网络无处不在,我们被庞大的虚拟网络包围,但我们却对它是怎样把我们的信息传递并实现通信的,我们并没有了解过,那么当我们在浏览器中出入一段地址,按下回车这背后都会发生什么? 比如说一般场景下&a…

ubuntu18.04安装QT5

ubuntu18.04安装QT5 1、说明 QT界面本不应该做为一个很高的知识点,问题是,越来越多的程序实验,需要界面支持,或用界面显得更加方便,因而专门启动该栏目专门介绍QT方法。因为体系比较庞大,因此,需…

在腾讯云 TKE 上部署 EMQX MQTT 服务器集群

云进入以「应用为中心」的云原生阶段,Operator 模式的出现,为 Kubernetes 中的自动化任务创建配置与管理提供了一套行之有效的标准规范。针对大规模分布式物联网 MQTT 消息服务器 EMQX 全生命期管理的自动化管理工具 EMQX Kubernetes Operator&#xff0…

11.数组的分类和定义

1.数组的概念 数组是若干个相同类型 的变量在内存中有序存储的集合。 int a[10];//定义了一个整型的数组a,a是数组的名字,数组中有10个元素,每个元素的类型都是int类型,而且在内存中连续存储。 这十个元素分别是a[0] , a[1] , … …

[附源码]java毕业设计鲜花销售管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

同花顺_代码解析_技术指标_Z_2

本文通过对同花顺中现成代码进行解析,用以了解同花顺相关策略设计的思想 目录 ZNZ_CYC ZNZ_CYD ZNZ_CYDD ZNZ_CYDK ZNZ_CYE1 ZNZ_CYF1 ZNZ_CYMR ZNZ_CYOBV ZNZ_CYQKL ZNZ_CYQKR ZNZ_CYR ZNZ_CYS ZNZ_DKBL ZNZ_CYC 指南针成本均线 技术分析非常重视成…

【PinkCAx】可视化工具开发记录与总结

-----------PinkCAx----------- 仅以此篇,记录我的一次可视化软件开发尝试点滴。 简介 PinkCAx是一款采用Python语言编写的,基于QT5VTK架构的三维可视化工具。 该工具目前的功能如下: 基本操作 网格文件的打开与保存(支持STL、P…

Packet Tracer - 确定 DR 和 BDR

地址分配表 设备 接口 IP 地址 子网掩码 RA G0/0 192.168.1.1 255.255.255.0 Lo0 192.168.31.11 255.255.255.255 RB G0/0 192.168.1.2 255.255.255.0 Lo0 192.168.31.22 255.255.255.255 RC G0/0 192.168.1.3 255.255.255.0 Lo0 192.168.31.33 255.25…

sqli-labs/Less-38

这一关有变成了get请求的题目了 我们先判断一下是否属于数字型注入 输入如下 id1 and 12 回显如下 属于字符型 然后判断一下是单引还是双引 输入1 报错了 从报错信息可知 这是一个单引号注入型 我们去佐证一下呗 输入1-- 回显如下 可以 确实是单引号注入型 然后我选择使用…