事务管理基础:两段锁协议、活锁、死锁相关知识整理

 

 

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及串口基础知识硬件:断路器、接触器、继电器基础知识

posted @   天使不哭  阅读(222)  评论(0编辑  收藏  举报  
编辑推荐:
· 记一次.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 取消表单危险字符验证
点击右上角即可分享
微信分享提示