搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
正经夜光杯
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
10、tensorflow 2.6的环境搭建,driver12.1,cuda 11.3,cuda tool 11.2,_user cuda11.3应该安装什么版本的tensorflow
2
burpsuite官方下载地址_burpsuite官网
3
亚马逊 AWS、微软 Azure、谷歌云计算、IBM 云、华为云、阿里云、腾讯云等常见的公有云比较_谷歌云服务器和微软云服务器和阿里云哪个好
4
python输出空心长方形_python3打印空心三角*形状
5
推荐开源项目:libtorch-yolov3 - C++实现的YOLOv3目标检测库
6
JavaScript学习笔记(二十)DOM动画效果
7
Android 14 变更及适配攻略_android14适配
8
QT QByteArray 的用法_qt将bytearray类型写入新文件
9
Java导出Excel表的两种方式
10
初识形式化验证工具——CPN tools
当前位置:
article
> 正文
11.4 活锁和死锁
作者:正经夜光杯 | 2024-06-30 08:35:00
赞
踩
活锁
思维导图:
11.4 活锁和死锁
11.4.1 活锁
活锁的定义
:
活锁发生在多个事务反复因为锁资源竞争而互相等待,但没有事务能够继续执行。
活锁的产生
:
例子:事务T₁锁定数据R,事务T₂等待R。当T₁释放R后,系统先批准另一个事务T₃的锁请求,T₂继续等待。这种模式可能导致T₂永远等待。
避免活锁的方法
:
先来先服务策略
:按照事务请求锁的顺序进行排队,一旦锁被释放,就按顺序批准下一个请求。
11.4.2 死锁
死锁的定义
:
死锁是指多个事务互相等待对方持有的锁资源,导致所有涉及事务都无法继续执行的情况。
死锁的产生
:
例子:事务T₁等待事务T₂持有的锁,同时T₂等待T₁持有的锁,导致两个事务都无法继续执行。
避免死锁的策略
:
死锁预防
:如超时机制,锁定顺序等。
死锁检测与恢复
:系统定期检测死锁并选择牺牲某些事务以解锁。
注意点
理解活锁和死锁的区别
:活锁涉及事务无限期等待,而死锁涉及事务相互阻塞。
避免策略的重要性
:了解不同的避免策略以减少或消除活锁和死锁的风险。
易错点
混淆活锁和死锁
:可能会混淆活锁和死锁的概念和特征。
忽视避免策略
:在数据库设计和操作中可能会忽视实施有效的活锁和死锁避免策略。
过度依赖死锁检测
:可能过分依赖死锁检测机制,而忽略更主动的预防措施。
11.4.2 死锁
1.
死锁的定义
概念
:多个事务因为互相等待对方持有的锁资源而导致都无法继续执行的局面。
2.
死锁的产生
示例
:事务T₁锁定数据R,事务T₂锁定数据R₂,然后T₁请求锁定R₂,T₂请求锁定R,导致彼此等待。
3.
死锁预防
一次封锁法
:事务一次性锁定所有需要的数据对象,避免死锁但可能降低并发度。
顺序封锁法
:按预定顺序锁定数据对象,避免死锁但在实际操作中难以维护。
4.
死锁的诊断与解除
超时法
:基于等待时间判断死锁,易于实现但可能误判。
等待图法
:构建事务等待图,通过检测回路来判断死锁。
解除死锁
:选择代价最小的事务进行撤销,释放锁资源。
注意点
理解死锁的严重性
:强调死锁对系统性能的影响和需要采取的预防措施。
死锁预防和解除策略
:了解不同的死锁预防和解除策略及其应用场景。
易错点
死锁预防策略的过度应用
:过度使用死锁预防策略可能导致系统并发度降低。
误解死锁的诊断方法
:可能会误判死锁或不适当地选择解除死锁的事务。
忽视死锁的动态性
:在动态变化的数据库环境中,死锁的情况可能频繁变化,需要适时调整策略。
这一节的笔记强调了死锁在数据库并发控制中的重要性,特别是在避免资源浪费和保持事务运行顺畅方面的作用。理解死锁的概念以及如何预防和解除死锁对于维护高效和稳定的数据库系统至关重要。
重点
活锁的定义
:活锁发生时,事务不断地重复尝试获取锁,但由于其他事务的相互竞争,它们都无法继续进行。
活锁的产生
:例如,事务T₁锁定资源R后,事务T₂等待R;当T₁释放R且系统允许另一个事务T₃获得R的锁时,T₂继续等待,可能导致T₂永远在等待。
3.
避免活锁的方法
先来先服务策略
:根据事务请求锁的时间顺序进行排队,保证公平性。
难点
理解活锁产生的机制
:活锁通常是由于系统资源分配策略不当造成的。
区分活锁和死锁
:活锁涉及事务在等待时不断尝试,而死锁是事务完全停滞。
易错点
混淆活锁和死锁
:可能会将活锁误解为死锁,两者虽然都涉及锁等待,但表现形式和解决方法不同。
错误的避免策略
:在尝试避免活锁时,可能过度依赖先来先服务策略,而忽视了对事务优先级或其他资源分配策略的考虑。
忽视活锁的影响
:可能低估活锁对系统性能的影响,尤其是在高并发环境中。
重点
死锁的定义
:多个事务由于互相等待对方持有的锁而导致无法继续执行。
死锁的产生原因
:事务互相锁定对方需要的资源,形成等待循环。
死锁预防方法
:
一次封锁法
:一次性锁定所有需要的资源。
顺序封锁法
:按照一定顺序锁定资源。
4.
死锁的诊断与解除
超时法
:基于事务等待时间超过阈值判断死锁。
等待图法
:通过检测事务等待图中的循环来判断死锁。
解除策略
:撤销代价最小的事务以解锁。
难点
理解死锁产生的机制
:明白事务如何通过互相等待造成死锁。
选择适当的死锁预防方法
:根据不同场景选择合适的死锁预防策略。
易错点
死锁预防方法的不当应用
:过度使用某种死锁预防方法可能导致系统并发性能降低。
误判死锁情况
:使用超时法可能会因为非死锁原因导致的延迟误判为死锁。
处理死锁的方法选择
:在解除死锁时,错误地选择撤销事务可能导致更大的资源浪费或业务影响。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/正经夜光杯/article/detail/771987
推荐阅读
article
史上最全141道大
数据
面试题
:
Redis
+
Linux
+
kafka
+Hadoop,附答案...
18、有 10 个文件,每个文件 1G,每个文件的每一行存放的都是用户的 query,每个文件的 query 都可能重复...
赞
踩
article
GPT
-
4o
版本
间
的
对比分析
和
使用心得_
gpt
4o
各
版本
有啥区别...
总体来说,
GPT
-
4o
作为最新
的
语言模型,凭借其在自然语言处理、多模态处理、专业领域应用
和
实时信息处理方面
的
显著改进,展...
赞
踩
article
python
菜鸟
教程-
tkinter
画图
_
tkinter
画图
...
本文介绍了如何在Python中使用Tkinter进行GUI编程,包括解决ImportError、Tkinter在不同版本...
赞
踩
article
迎接
AI
大
模型
时代:为什么
JS
-
Tool
-Big-
Box
是
前端开发
者的最佳选择...
随着
AI
大
模型
的快速发展,
前端开发
面临着前所未有的机遇和挑战。数据量和复杂度的增加,以及用户对卓越体验的需求,使得前端工...
赞
踩
article
Java
中
NullPointerException
异常
的
处理
方法详解...
大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!在Ja...
赞
踩
article
【跨模态实践】(四)
streamlit
前端
框架
分享
_
streamlit
清空
输入框
...
仅需几行代码,快速搭建可视化
前端
,专为数据科学家服务的
前端
框架
stremlit来袭!
_
streamlit
清空
输入框
str...
赞
踩
article
[
极客
大
挑战
2020]
Roamphp4
-
Rceme
_[
极客
大
挑战
2020]
rceme
...
右键源代码里给了提示,有备份文件index.php.swp,大伙都做到这来了,应该不用写了吧。加这个[~%FF]只是因为...
赞
踩
article
深入分析
Android
BroadcastReceiver
(六)...
广播机制(
BroadcastReceiver
)在
Android
中提供了强大的组件间通信功能,但在现代应用开发中,推荐...
赞
踩
article
linux
使用
经验...
转载于http://wolfplanet.iteye.com 用Ubuntu已经半年时间了,把我的经验分享给大家。最基本...
赞
踩
article
计算机系统
结构
中那些能理解
的
计算题
_
计算机系统
结构
计算题
...
文章目录第一题:来自咱们
的
学习通。第一章作业2,第1题,可以去翻一翻哈。第二题:书上
的
第九页例题1.6第三题:(只能看懂...
赞
踩
article
C
语言
实现一下
韩信点兵
_
韩信点兵
c
语言
编程...
c
语言
实现
韩信点兵
_
韩信点兵
c
语言
编程
韩信点兵
c
语言
编程 ...
赞
踩
article
Zookeeper
客户端
Curator
使用详解_
curator
客户端
...
简介
Curator
是Netflix公司开源的一套zookeeper
客户端
框架,解决了很多
Zookeeper
客户端
非常底层...
赞
踩
article
并发
控制
——
封锁
、
活锁和
死锁
_
并发
控制
rollback
怎么枷锁...
封锁
封锁
就是事务T在对某个数据对象(表
、
记录等)操作之前,先向系统发出请求,对其枷锁 加锁后事务T就对该数据对象有了一定...
赞
踩
article
css
页面
滚动条
出现时防止
页面
跳动的
方法
...
css
页面
滚动条
出现时防止
页面
跳动的
方法
大家写
页面
时应该都遇到过一个问题,尤其是写单
页面
应用的时候,在...
赞
踩
article
从零搭建
react
+
webpack
项目
_
react
项目
增加
webpack
...
从零构建
react
+
webpack
项目
_
react
项目
增加
webpack
react
项目
增加
webpack
...
赞
踩
article
#10006. 「一本通 1.1 练习 2」
数列
分段_
对于
给定
的
一个
长度
为
n
的
正整数
数列
ai,现...
【题目描述】
对于
给定
的
一个
长度
为 N
的
正整数
数列
Ai,现要将其
分成
连续
的
若干段
,并且
每段
和不超过 M(可以等于 M)...
赞
踩
article
eclipse
连接
GitHub
_
eclipse
小组
怎么登录...
eclipse
连接
GitHub
首先在
eclipse
中安装egit插件,可以直接在help->
eclipse
market...
赞
踩
article
使用
stable
-
diffusion
入门级教程【
Mac
】(附
安装包
)_
stable
diffus...
绝不止这么一点皮毛,还需要继续研究配置,本文也只解释了如何入门的,里面还可以配置多帧,随后做成视频。_
stable
di...
赞
踩
article
计算机
毕业设计
之全网独家
Spark
租房爬虫
数据分析
与推荐
系统
租房大数据 租房app 租房
数据分析
...
计算机
毕业设计
之全网独家
Spark
租房爬虫
数据分析
与推荐
系统
租房大数据 租房app 租房
数据分析
租房爬虫 房源推荐系...
赞
踩
article
码云
Gitee
+
Jenkins
配置教程_
jenkins
配置
码云
...
对于 PR 工作流,
码云
服务端已经将 PR 的原分支和目标分支作了预合并,您可以直接构建,如果目标分支不是默认分支(发布...
赞
踩
相关标签
大数据
redis
linux
人工智能
python
开发语言
学习
青少年编程
javascript
ecmascript
AI大模型
java
前端框架
前端
android
Broadcast
Receiver
Linux
Ubuntu
Vmware
vim
Qt
操作系统