事务的锁的基本种类及定义

数据库中基本锁的种类

基本的锁的类型有两种锁:排他锁(X锁)和共享锁(S锁)

排他锁

排他锁也叫写锁。当事务T对数据对象A加上X锁时,就只允许事物T对A进行和修改A,其他事务都无法对A再加任何其他的锁,直到T释放对A的锁。

共享锁

共享锁也叫读锁。当事务T对数据对象A加上S锁后,事务T可以读取A,但是不能对A进行修改,其他事务只能对A加上S锁,但是不能加X锁,直到T释放掉对A的S锁为止。

两个锁的相容关系
T1\T2XS
XNNY
SNYY
YYY

封锁协议

封锁协议主要有3种,分别对应的一级、二级、三级封锁协议。

一级封锁协议:主要是指事务在修改数据前必须需要先加上X锁,直到事务结束才释放。

二级封锁协议:在一级封锁协议的基础上增加事务T在读取数据R之前需要对其加S锁,读完后可以释放S锁。

三级封锁协议:在一级封锁协议的基础上增加事务T在读取数据R之前需要对其加S锁,直到事务结束才释放。

这三种协议都是在解释什么操作需要申请封锁,以及何时释放锁。

死锁和活锁

活锁

活锁就是一个事务在等待其他锁的释放,但是这个锁释放后先满足了其他事务的请求,事务T2就永远在等待。

死锁

死锁就是一个事务T1先封锁一个数据对象R1,事务T2封锁了一个数据对象R2,这时事务T1又请求数据对象R2,而事务T2也请求数据对象R1,这样两个事务都在等对方先释放掉锁,两个事务就永远不会结束,形成死锁。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jmZbuksI-1655521219143)(C:\Users\大勇\AppData\Roaming\marktext\images\2022-06-18-10-37-48-image.png)]

死锁的预防方法

一次封锁法:要求每个事务必须将一次所有需要用的数据全部加锁,否则就不能执行下去

顺序封锁法:预先对数据对象规定一个封锁顺序,所有的事务都按这个顺序实施封锁。

两段锁协议

两段锁协议指的是所有事务必须分两个阶段对数据项加锁和解锁。

“两段” 指的是事务分为两个阶段,第一阶段是获得封锁,也称为扩展阶段,在这个阶段可以申请获得所有数据对象的封锁,但是不能释放任何锁,第二阶段指的是释放封锁,也称 为收缩阶段,在这个阶段,事务可以释放任何类型的锁,但是不能再申请任何锁。

意向锁

意向共享锁(IS锁):如果想要对一个数据对象加S锁,需要其所在的关系模式和数据库加IS锁。

意向排他锁(IX锁):如果想要对一个数据对象加X锁,需要对其所在的关系模式和数据库加IX锁

总结

本文主要介绍封锁锁的一些种类及其概念,欢迎大家一起交流。
个数据对象加X锁,需要对其所在的关系模式和数据库加IX锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值