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

在并发事务的执行时,容易引起数据不一致,有一下几种情况
丢失修改
:两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失
读脏数据
:事务T1对数据D进行修改,事务T2读取到了事务T1修改的数据,接着事务T1发生异常进行回滚,事务T2读取到的就叫做“脏数据"
不可重复读
:不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果
数据库的三段加锁协议,可以很好的解决以上问题
三段锁协议:
共享锁(S锁):共享 (S) 用于不更改或不更新数据的操作(只读操作),如 SELECT 语句。
如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。

排他锁(X锁):用于数据修改操作,例如 INSERT、UPDATE 或 DELETE。确保不会同时同一资源进行多重更新。
如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据。

用三段锁协议来解决数据不一致的三种情况
1.一级封锁协议解决丢失修改
当事务在更新数据的时候给数据加上排他锁
原理:加上排他锁之后,其他事务不能对该数据加上任意锁,在当前事务没有释放锁时其他事务不能进行对该数据的读写操作,只有当前事务释放排他锁之后,才能对该数据进行操作

2.二级封锁协议解决读脏数据
在一级封锁协议的基础上,当事务在读取数据的时候加共享锁,读取完成后释放锁
原理:加入共享锁之后,不能对该数据加排他锁,即其他事务不能进行修改数据。所以此时读取的数据一定是与数据库一致的

3.三级封锁线协议不可重复读
在一级封锁协议的基础上,当事务在读取数据的时候加共享锁,事务结束后释放
原理:加入共享锁之后,不能对该数据加排他锁,即其他事务不能进行修改数据。如果读取完成后就释放,那么其他事务此时可以修改该数据。当延迟到事务结束后释放,其他事务就无法修改该数据了

事务的封锁级别不是越高就越好,随着封锁粒度的增加会影响执行效率。
————————————————
版权声明:本文为CSDN博主「豪满天下」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43752167/article/details/100741144

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

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

相关文章

一至七-----小东西

一至七-----小东西 用什么就声明什么,可以节约空间,如下:using std::cout using std::cin using std::endl cin和 cout 是 istream类 和 ostream类 的对象cin只能读取单词,如果使用cin>>name,输入如果是个句子即…

图灵奖得主Jeff Ullman直言:机器学习不是数据科学的全部!统计学也不是

来源:智源社区作者:Jeff Ullman编译:梦佳1Have we missed the boat again? 多年来,数据库领域有一种言论认为,数据库系统正在变得无关紧要。 大家似乎持一种绝望的心态。“have we missed the boat-again”这句话&…

Leetcode--1028. 从先序遍历还原二叉树(Java)

我们从二叉树的根节点 root 开始进行深度优先搜索。 在遍历中的每个节点处,我们输出 D 条短划线(其中 D 是该节点的深度),然后输出该节点的值。(如果节点的深度为 D,则其直接子节点的深度为 D 1。根节点的…

html-列表

<!DOCTYPE html><html lang"en"><head> <meta charset"UTF-8"> <title>Document</title></head><body><h3>你喜欢的水果&#xff1a;</h3><ul> <!-- 无序列表 --> <li>苹果…

赛迪展望 | 一文了解“2021年中国先进计算产业发展趋势”

来源&#xff1a;中国电子信息产业发展研究院内容提要人类社会的组织、生产和生活方式正伴随着计算技术创新、融合、扩散、升级&#xff0c;呈现深刻的变革趋势。计算对经济社会发展和产业能级跃升的驱动作用日益凸显。展望2021年&#xff0c;先进、新型的计算基础架构&#xf…

124. 二叉树中的最大路径和(Java)

给定一个非空二叉树&#xff0c;返回其最大路径和。 本题中&#xff0c;路径被定义为一条从树中任意节点出发&#xff0c;达到任意节点的序列。该路径至少包含一个节点&#xff0c;且不一定经过根节点。 示例 1: 输入: [1,2,3] 1 / \ 2 3 输出: 6 示例 2: 输…

物理如何证明上帝的存在?

来源&#xff1a;利维坦文&#xff1a;Monica Grady译&#xff1a;苦山校对&#xff1a;兔子的凌波微步原文&#xff1a;www.bbc.com/future/article/20210301-how-physics-could-prove-god-exists“我曾在一次研讨会上听到下面这个问题——当时我还相信上帝&#xff08;现在我…

XSS攻击的防御

XSS攻击的防御 XSS 攻击是什么 XSS 又称 CSS&#xff0c;全称 Cross SiteScript&#xff0c;跨站脚本攻击&#xff0c;是 Web 程序中常见的漏洞&#xff0c;XSS 属于被动式且用于客户端的攻击方式&#xff0c;所以容易被忽略其危害性。其原理是攻击者向有 XSS 漏洞的网站中输入…

HashSet源码解析(最好先看HashMap的源码解析)

HashMap的源码解析&#xff1a;https://mp.csdn.net/console/editor/html/106188425 HashSet&#xff1a;Java中的一个集合类&#xff0c;该容器不允许包含重复的数值 public class HashSet<E>extends AbstractSet<E>implements Set<E>, Cloneable, java.i…

【前沿技术】2021年AI将改变制造业的6大应用趋势

来源&#xff1a;智能研究院 如今制造行业流行的是什么?我想&#xff0c;这可少不了“数字转换”、“工业4.0”、“人工智能(AI)”...下面&#xff0c;就让我们一起看看AI如何改变制造业。▍一、用于缺陷检测的深度学习在制造中&#xff0c;生产线中的缺陷检测过程变得越来越…

MarkDown/Html在线转换(支持代码高亮,可复制到微信公众号、今日头条)

MarkDown/Html在线转换能够将md渲染成html并且能保持代码高亮&#xff0c;可以方便的复制待格式的html粘贴到微信公众号&#xff0c;CSDN&#xff0c;简书&#xff0c;博客园&#xff0c;开源中国等。 扫码体验在线助手小程序 我是java代码public static void main(String[] ar…

idea控制台乱码问题

出现 淇℃伅 乱码 进入Tomcat下的 logging.properties 讲UTF-8改为GBK java.util.logging.ConsoleHandler.encoding UTF-8 java.util.logging.ConsoleHandler.encoding GBK

脑机接口简史——假如这篇推送是你靠意念打开的

来源&#xff1a;脑极体未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&#xff08;城市&#xff09;云脑研究计划&#xff0c;构建互联网&#xff08;城市&#xff09;云脑技术和企业图谱&a…

10-18考试记

10-18考试记 300分。开心。 1、咒语 【题目描述】 亮亮梦到自己来到了魔法城堡&#xff0c;但一扇巨大的石门阻拦了他通向城堡内的路。 正当他沮丧之际&#xff0c;突然发现门上有一处机关&#xff0c;机关上有一张很长的纸条。 亮亮拿起纸条的一端&#xff0c;只见上面写着打开…

一文读懂深度学习中的各种卷积

来源&#xff1a;海豚数据科学实验室编辑&#xff1a;王萌(深度学习冲鸭公众号)我们都知道卷积的重要性&#xff0c;但你知道深度学习领域的卷积究竟是什么&#xff0c;又有多少种类吗&#xff1f;研究学者 Kunlun Bai 发布了一篇介绍深度学习的卷积文章&#xff0c;用浅显易懂…

Leetcode--96. 不同的二叉搜索树(java)

给定一个整数 n&#xff0c;求以 1 ... n 为节点组成的二叉搜索树有多少种&#xff1f; 示例: 输入: 3 输出: 5 解释: 给定 n 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1…

简介

现在市场上存在很多厂商推出的数据库管理系统&#xff0c;商业化的有Oracle、MSSQLServer、DB2、SybaseSQLServer、Informix&#xff0c;开源的有MYSQL、SQLite、SimpleSQL、Berkely DB、Minosse、Firebird、HSQLDB等&#xff0c;这些数据库产品的出现给了开发者更多的选择余地…

为什么信不过AI看病?数据集小、可靠性差,AI医疗任重道远

来源&#xff1a;机器之心近年来&#xff0c;AI 在医疗诊断中的应用受到了越来越多的关注&#xff0c;也出现了一些实际的应用场景&#xff0c;如药物筛选、AI 诊断。但似乎正确的 AI 医疗诊断难以实现&#xff0c;这是哪些原因造成的呢&#xff1f;本文探讨并汇总了人们对 AI …

URI与URL

统一资源标志符URI就是在某一规则下能把一个资源独一无二地标识出来。 拿人做例子&#xff0c;假设这个世界上所有人的名字都不能重复&#xff0c;那么名字就是URI的一个实例&#xff0c;通过名字这个字符串就可以标识出唯一的一个人。 现实当中名字当然是会重复的&#xff0c;…

p1470 Longest Prefix

原本就想到dp&#xff0c;可是是我的思路是在串的各个位置都遍历一次set&#xff0c;看dp[i-st[k]]是否为1且前length(st[k])是st[k]。这样200000*200*10会超时。更好的办法是在i位取前len<10个看dp[]和set中是否存在。只要200000*55*log200。 #include <iostream> #i…