什么是封锁?基本的封锁类型有几种?试述它们的含义

如题所述

封锁是指事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。

基本类型:排它锁(记为X锁)、共享锁(记为S锁)

1、排它锁又称为写锁。若事务T 对数据对象A 加上X 锁,则只允许T 读取和修改A , 其它任何事务都不能再对A 加任何类型的锁,直到T 释放A 上的锁。

2、共享锁又称为读锁。若事务T 对数据对象A 加上S 锁,则其它事务只能再对A 加S 锁,而不能加X 锁,直到T 释放A 上的S 锁。

扩展资料:

一、封锁单元,封锁的对象可以是逻辑单元,也可以是物理单元。

1、逻辑单元: 属性值、属性值集合、元组、关系、索引项、整个索引、整个数据库等;

2、物理单元:页(数据页或索引页)、块等。

二、封锁粒度,封锁对象可以很大也可以很小,例如对整个数据库加锁、对某个属性值加锁。封锁对象的大小称为封锁的粒度。封锁的粒度越大,系统中能够被封锁的对象就越少,并发度也就越小,但系统开销也越小;封锁的粒度越小,并发度越高,但开销也就越大。

三、粒度选择,选择封锁粒度时必须同时考虑开销和并发度两个因素,进行权衡,以求得最优的效果。

参考资料来源:百度百科-封锁

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-07-18

封锁是指事务T在对某个数据对象(例如表、记录等)操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。

基本类型:排它锁(记为X锁)、共享锁(记为S锁)

1、排它锁又称为写锁。若事务T 对数据对象A 加上X 锁,则只允许T 读取和修改A , 其它任何事务都不能再对A 加任何类型的锁,直到T 释放A 上的锁。

2、共享锁又称为读锁。若事务T 对数据对象A 加上S 锁,则其它事务只能再对A 加S 锁,而不能加X 锁,直到T 释放A 上的S 锁。

预防死锁的方法:

(1)一次封锁法

一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。

一次封锁法存在的问题:降低并发度;扩大封锁范围。

一次就将以后要用到的全部数据加锁,势必扩大了封锁的范围,从而降低了系统的并发度。

(2)顺序封锁法

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

顺序封锁法存在的问题:维护成本高。

中可封锁的数据对象极其众多,并且随数据的插入、删除等操作而不断地变化,要维护这样极多而且变化的资源的封锁顺序非常困难,成本很高。

本回答被网友采纳
第2个回答  推荐于2017-09-17
封锁就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象。
封锁是实现并发控制的一个非常重要的技术。
基本的封锁类型有两种:排它锁(Exclusive Locks,简称X锁)和共享锁(Share Locks,简称S锁)。
排它锁又称为写锁。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。
共享锁又称为读锁。若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。本回答被提问者和网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网