数据库中的锁

锁冲突是针对事务的,另一个事务能不能申请上锁,是和其他事务竞争。
一个事务内部可以加很多锁,互相并不会冲突。

级联回滚调度

多个事务有依赖关系,如果一个事务回滚,那么所有事务也需要回滚。

冲突的数据加锁安排顺序,不冲突的数据不加锁可以直接并发。

二阶段锁

这个是针对一个完整的事务。
即加锁放在上边,解锁放在下边,不能加锁-解锁-加锁这样。

严格两阶段锁

互斥锁保持到提交或者失败才释放,其他事务无法在这个时期读写。

强两阶段锁

互斥锁和共享锁都保持到提交或失败再释放。

锁的升级和降级

共享锁升级为互斥锁。互斥锁可以降级为共享锁。

锁粒度

锁粒度直接影响,管理复杂度和并发程度。
根据结构构建树。
想要在数据库上加锁,需要判断数据库的所有子节点以及父节点都没有加锁。
数据库加锁,其所有的子节点也要加锁。
给文件加锁,其所有行也即加了锁。

为了简化这个考虑情况,加入了意向锁:

意向锁:表现了其子节点的加锁情况

(1)共享意向锁。子节点想加共享锁,就需要先给其所有父节点都加上共享意向锁。
(2)互斥意向锁。子节点想加互斥锁,需要给父节点先加上互斥意向锁。
(3)共享互斥意向锁。既有共享又有互斥锁 ,一个事务中。
子节点加共享锁,

给节点加意向锁判断事务冲突

加意向锁需要从根节点开始加,并且判断,直到目的节点。
意向共享锁不冲突。
互斥意向锁和共享意向锁不冲突,如果两锁加到同一个节点,那么会冲突,但是这个交给了子节点去判断。
互斥锁和意向锁都有冲突。
共享锁和互斥意向锁是冲突的,因为加了共享锁其子节点都加了共享锁,无论是哪个节点加互斥锁都是冲突的。
互斥锁和互斥意向锁也冲突的。

解锁是从当前节点到根节点。
![[Pasted image 20231230141322.png]]

一个互斥锁,一个共享锁,从上往下加锁,在行记录有互斥锁和共享锁冲突。只能等待。
而数据库的意向共享和意向互斥锁不冲突,表的意向共享和意向互斥也不冲突。

死锁

两种方法:预防和处理死锁。
(1)申请到所有资源后再使用。(数据动态变化,不可能实现)
(2)超时失败

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

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

相关文章

计算机毕业设计------SSM游戏点评网站

项目介绍 本项目分为前后台,前台为普通用户登录,后台为管理员登录; 管理员角色包含以下功能: 管理员登录,管理员管理,网站用户管理,游戏资讯管理,游戏类型管理,城市信息管理,竞技场管理,游戏信息管理,游戏评价信息管理等功能。…

集合基础知识点

集合基础 1. 集合的由来 当 Java 程序中需要存放数据的时候,通常会定义变量来实现数据的存储,但是,当需要存储大量数据的时候该怎么办呢?这时首先想到的是数组,但是!数组只能存放同一类型的数据&#xff…

CLion中使用C/C++ Single File Execution插件编译和运行单个文件

在开发C/C程序时,尽管项目通常以组织良好的结构进行管理,但有时我们可能只需要快速测试或运行单个C或C源文件。对于这种情况,JetBrains CLion IDE提供了一个便捷的解决方案——通过安装名为“C/C Single File Execution”的插件来实现对单个源…

机器学习——主成分分析(PCA)

目录 一、特征维度约减 1. 为何要维度约减 2. 特征维度约减的概念 二、主成分分析 1. 主成分 2. 主成分的代数定义 3. 主成分的代数推导 3.1. 第一主成分 3.2. 第二主成分 4. 主成分分析算法流程 三、主成分分析算法实现 四、总结 一、特征维度约减 1. 为何要维度…

深度学习-数据基本使用

数据使用 文章目录 数据使用一、数据的获取1、图片爬虫工具2、视频爬虫工具3、复杂的爬虫工具(flickr)4、按照用户的ID来爬取图片5、对一些特定的网站进行爬(摄影网站)(图虫、500px,花瓣网等等)6、爬虫合集 二、数据整理1、数据检查与归一化2…

VS Code中文改成空格,把空行去掉

在VS Code中同时按下CtrlH使用(.*[\u4E00-\u9FA5])|([\u4E00-\u9FA5].*)正则文法匹配中文,然后按照下图操作可以把中文改成空格。 完成之后如下图: ^\s*(?\r?$)\n可以匹配空行,然后按下图操作可以把空行去掉。

使用IDEA创建maven java项目(hello word)(1.8)

参考资料: idea创建java项目_使用IDEA创建java项目(hello word)-CSDN博客 ​ 本文代码工程下载链接: https://download.csdn.net/download/xijinno1/87441597 ​ 前提:已安装好jdk,配置好环境变量。我使用的是java 8(…

车载电子电器架构 —— 电子电气系统开发角色定义

车载电子电器架构 —— 电子电气系统开发角色定义 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 注:本文12000字,深度思考者进!!! 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的…

2023.12.28 关于 Redis 数据类型 List 内部编码、应用场景

目录 List 编码方式 早期版本 现今版本 List 实际应用 多表之间的关联关系 消息队列 频道(多列表)消息队列 微博 Timeline 栈 & 队列 List 编码方式 早期版本 早期版本 List 类型的内部编码方式有两种 ziplist(压缩列表&#xf…

4~20mA恒流源 --PLC自控控制

输出部分不接地 1.1&#xff0c; 常规恒流源的方式 用采样电阻 * 电流 控制电压的方式。 负载电阻 * 电流 < 工作电压 1.2&#xff0c;根据运放高阻的特性 Ir Ui/ R, Ir IL, 最大输出电流限制于 RL * Il < Ui. 输出部分接地&#xff0c;工程上更多是用于豪兰德恒流源…

Dragonfly-SM X9H核心板 SM6700Q PMIC供电配置烧录介绍

一、概述 核心板采用 1 片芯迈 SM6700Q PMIC 芯片搭配 3 片 MPQ8861 DCDC 电源芯片和 2 片安森美 LDO&#xff0c;型号分别 NCV8164ASN180T1G 和 NCV8130BMX080TCG 为系统供电。 二、核心板供电框图 系统供电主要是 MCU 的 RTC 域、安全域、应用域的供电&#xff0c;其中 RTC 域…

go module本地包导入

go module本地包导入 本文目录 go module本地包导入启用go mod主项目工作目录本地module目录发布和使用模块 golang 1.11之后加入了go mod来替代GOPATH 官方文档参考&#xff1a;https://golang.google.cn/doc/tutorial/call-module-code 启用go mod 开启 Go modules # 临时开…