两个关系表达式E1和E2是等价的,可记作E1≡E2。常用的等价变换规则有以下几种。,Bm是E2的属性,则:10.投影与并的交换若E1和E2为可比属性,则有......
2025-09-30
在运用X锁和S锁给数据对象加锁时,还需要约定一些规则,例如,何时申请X锁或S锁、持锁时间、何时释放锁等。称这些规则为封锁协议或加锁协议。对封锁方式制定不同的规则,就形成了各种不同级别的封锁协议。不同级别的封锁协议所能达到的系统一致性级别是不同的。
1.一级封锁协议
一级封锁协议:对事务T要修改的数据加X锁,直到事务结束(包括正常结束和非正常结束)时才释放。
一级封锁协议可以防止丢失修改,并保证事务T是可恢复的,如图7-8所示。在图7-8中,事务T1要对A进行修改,因此,它在读A之前先对A加了X锁;当T2要对A进行修改时,它也申请对A加X锁,但由于A已经被加了X锁,因此T2申请对A加X锁的请求被拒绝,T2只能等待,直到T1释放了对A加的X锁为止。当T2能够读取A时,它所得到的已经是T1更改后的值了。因此,一级封锁协议可以防止丢失修改。

图7—8 没有丢失修改
在一级封锁协议中,如果事务丁只是读数据而不对其进行修改,则无须加锁。因此,不能保证可重复读和不读“脏”数据。
2.二级封锁协议
二级封锁协议:一级封锁协议加上事务T对要读取的数据加S锁,读完后即释放S锁。
二级封锁协议除了可以防止丢失修改外,还可以防止读“脏”数据。如图7-9所示为使用二级封锁协议防止读“脏”数据的情况。
在图7-9中,事务T1要对B进行修改,因此,先对B加了X锁,修改完后将值写回数据库。这时T2要读B的值,因此,申请对B加S锁,由于T1已在B上加了X锁,因此T2只能等待。当T1由于某种原因撤销了它所做的操作时,B恢复为原来的值50,然后T1释放对B加的X锁,因而T2获得了对B的S锁。当T2能够读B时,B的值仍然是原来的值,即T2读到的是50。因此避免了读“脏”数据。
(https://www.chuimin.cn)
图7—9 二级封锁协议下不读“脏”数据
在二级封锁协议中,由于事务T读完数据即释放S锁,因此,不能保证可重复读数据。
3.三级封锁协议
三级封锁协议:一级封锁协议加上事务T对要读取的数据加S锁,并直到事务结束才释放。
三级封锁协议除了可以防止丢失修改和不读“脏”数据之外,还进一步防止了不可重复读。如图7-10所示为使用三级封锁协议防止不可重复读的情况。

图7—10 三个封锁协议下可重复读
在图7-10中,事务T1要读取A、B的值,因此先对A、B加S锁,这样其他事务只能再对A、B加S锁,而不能加X锁,即其他事务只能对A、B进行读取操作,而不能进行修改操作。因此,当T2为修改B而申请对B加X锁时被拒绝,T2只能等待。T1为验算再读A、B的值,这时读出的值仍然是A、B原来的值,因此求和的结果也不会变,即可重复读。直到T1释放了在A、B上加的锁,T2才能获得对B的X锁。
三个封锁协议的主要区别在于读操作是否需要申请封锁,以及何时释放锁。三个级别的封锁协议的总结如表7-2所示。
表7—2 不同级别的封锁协议

相关文章
两个关系表达式E1和E2是等价的,可记作E1≡E2。常用的等价变换规则有以下几种。,Bm是E2的属性,则:10.投影与并的交换若E1和E2为可比属性,则有......
2025-09-30
从1.1.1节的介绍可以看到,在数据库管理系统出现之前,人们对数据的操作是直接针对数据文件编写应用程序实现的,这种模式会产生很多问题。对于1.1.1小节中列举的学生基本信息管理和学生选课管理两个子系统,如果使用数据库技术来管理,其实现方式如图1-4所示。保证数据的安全是通过数据库管理系统的安全控制机制实现的,保证数据的可靠是通过数据库管理系统的备份和恢复机制实现的。......
2025-09-30
数据库设计过程是指在一个给定的应用环境,选择合理的数据库模式和数据模型进行数据库及应用系统设计,使之能够有效存取数据并满足用户需求的过程。数据库设计的过程也和其他软件系统设计一样,是个反复迭代的过程。数据库设计过程的划分也不是十分严格的,通常在系统设计的实施中,也未必完全依照这六个步骤顺序去开发,不过这六个阶段基本上包括了数据库设计的全过程和相关问题。......
2025-09-30
在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据和信息。在数据库系统中可以针对不同的使用对象和应用目的,采用不同的数据模型来实现。数据模型实际上是模型化数据和信息的工具。第一类是概念层数据模型,也称为概念模型或信息模型,它从数据的应用语义视角来抽取模型并按用户的观点来对数据和信息进行建模。第二类是组织层数据模型,也称为组织模型,它从数据的组织方式来描述数据。......
2025-09-30
关键字Modify File用以表示按后面的文件说明,在指定的数据库中修改相应数据库文件。下面的语句可在学籍管理数据库增加一个新数据库文件,同时要修改原数据库文件StuFile l的最大文件尺寸为2000 MB。Alter Database StuDataAdd FileModify File又如,如果要删除学籍管理数据库文件StuFile2,则可使用如下命令:Alter Database StuDataRemove File StuFile2......
2025-09-30
虽然对视图的操作最终都转换为对基本表的操作,视图看起来似乎没什么用处,但实际上,如果合理地使用视图会带来许多好处。定义视图可以将表与表之间复杂的连接操作和搜索条件对用户隐藏起来,用户只需简单地查询一个视图即可。这在多次执行相同的数据查询操作时尤为有用。......
2025-09-30
由于信息结构复杂,应用环境多样,在相当长的一段时期内数据库设计主要采用手工试凑法。人们经过探索提出了各种数据库设计方法,这些方法运用软件工程的思想和方法,提出了各种设计准则和规程,都属于规范设计法。工具在很大程度上依靠开发人员的经验来保证数据库模型能生成可行的设计方案和高性能的数据库。大多数的数据库设计方法都需要经历这三个步骤。根据所选择的设计方法按部就班地进行并最终获得一个实用的应用系统。......
2025-09-30
例如,一名学生可以用信息“”描述,这样的一行数据称为一条记录。单看这行数据我们很难知道其确切含义,但对其进行如下解释:张三是9912101班的男学生,1981年出生,计算机系应用软件专业,其内容就是有意义的。因此,数据是信息存在的一种形式,只有通过解释或处理才能成为有用的信息。数据的静态特征包括数据的基本结构、数据间的联系以及对数据取值范围的约束。数据的动态特征是指对数据可以进行符合一定规则的操作。......
2025-09-30
相关推荐