【数据库】二阶段锁
创始人
2024-04-27 03:51:54

Two-phase locking (2PL) is a concurrency controlprotocol that determines whether a txn can access an object in the database on the fly.

The protocol does not need to know all the queriesthat a txn will execute ahead of time.

分为两个阶段:
一阶段:只能加锁:Growing

二阶段:只能解锁:Shrinking
在这里插入图片描述
二阶段锁可以保证冲突可串行化。

1. 但是存在级联回滚的问题。
在这里插入图片描述
T2在T1的临时版本上做了操作,所以导致回滚。所以可以在最后commit 之前再解锁:
Strong Strict 2PL
在这里插入图片描述
只有在commit之前才一次性全部解锁。 不会产生级联回滚。其实也就是解决了脏读的问题,级联回滚的的原因就是产生了脏读。
在这里插入图片描述
2. 二阶段锁可能出现死锁的问题。
两种方法:
死锁检测:
构建了一个锁的等待图,节点是事务,边是等待锁。如果存在环路,那么就存在死锁。
victim selection 牺牲者选择方法:
通过其运行时间;运行语句数量;有多少锁被锁;必须要回滚的语句次数;已经回滚的次数;

同时,也不需要全部回滚。

死锁预防:
给每个事务一个优先级,老的事务优先级比较高;
wait-die;
老的等年轻的释放锁,年轻的如果要获取老的锁,就直接终止;
wound-wait:
老的直接获取新的锁,直接抢夺;新的需要等老的锁。

如果新的被中止后,它的时间戳是一开始执行的时间。

锁的粒度也需要权衡
粒度越小,并行越好,但是加锁的消耗就更大了。这里就需要一个权衡。

Intention Locks
意向标记,如果行被锁了,那么表就会有一个意向标记,这样其他事务在给表加锁的时候,就不需要逐个遍历行是否有锁了。
An intention lock allows a higher-level node tobe locked in shared or exclusive mode without having to check all descendent nodes.
在这里插入图片描述
所以构建了一个新的矩阵:
在这里插入图片描述

相关内容

热门资讯

苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...