事务管理基础:两段锁协议、活锁、死锁相关知识整理
1、两段锁协议(Two-phase Locking Protocol)
两段锁协议是指对任何数据进行读写之前必须对数据进行加锁;在释放一个封锁之后,事务不再申请和获得任何其他封锁。
两段锁协议中两段的含义:事务分为两个阶段,第一个获得封锁称为扩展阶段;第二阶段为释放阶段,也称为收缩阶段。
两段锁协议的目的:保证并发调度的正确性。
两段锁协议与可串行化:如果事务都遵循两段锁协议,那么它们的并发调度是可串行化。两段锁是可串行化的充分条件,但不是必要条件。如果事务不遵循两段锁协议,它们的并发调度有可能不是可串行化的。
说明:采用两段锁协议会有可能产生死锁的情况,因为每个事务不能及时解除被它封锁的数据,可能会导致多个事务互相要求对方已封锁的数据而产生死锁。
2、活锁、死锁介绍
活锁:主要是指事务T1封锁了数据R,事务T2请求封锁数据R,于是T2等待R的封锁被释放。当T1释放数据R上的封锁后,系统批准了T3事务的请求,于是T2仍然等待。如果T3释放后,又批准了T4的请求,那么T2可能会永远等待的现象。
死锁:主要是指两个以上的事务分别请求封锁对方已经封锁的数据,导致长期等待而无法继续运行下去的现象。
IT技术分享社区
个人博客网站:https://programmerblog.xyz
文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识
作者:天使不哭
微信号:hgmyzhl
微信公众号:小明互联网技术分享社区
CSDN:IT技术分享社区
知乎:IT技术分享社区
出处:小明互联网技术分享社区
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2020-01-05 这篇文章太懂程序员了,扎心了
2019-01-05 NTP时间服务器介绍
2019-01-05 NTP时间服务器介绍
2019-01-05 NTP时间服务器介绍
2018-01-05 ASP.NET 4.0 取消表单危险字符验证
2018-01-05 ASP.NET 4.0 取消表单危险字符验证
2018-01-05 ASP.NET 4.0 取消表单危险字符验证