二级封锁协议能否避免死锁

合集下载

数据库简答题

数据库简答题

1.什么是数据的安全性?答:数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏2.什么是数据库的完整性?答:数据库的完整性是指数据的正确性和相容性。

3.数据库的安全性和完整性有什么关系?答:数据的完整性和安全性是两个不同的概念,但是有一定的联系。

前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出所造成的无效操作和错误结果。

后者是保护数据库防止恶意的破坏和非法的存取。

也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。

4.试述实现数据库安全性控制的常用方法和技术。

答:实现数据库安全性控制的常用方法和技术有:(1)用户标识和鉴别:该方法由系统提供一定的方式让用户标识自己的名字或身份。

每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。

(2)存取控制:通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。

例如C2 级中的自主存取控制(DAC),B1级中的强制存取控制(MAC)。

(3)视图机制:为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。

(4)审计:建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中,DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件, 找出非法存取数据的人、时间和内容等。

(5)数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。

5.什么是数据库的审计功能,为什么要提供审计功能?答:审计功能是指DBMS 的审计模块在用户对数据库执行操作的同时把所有操作自动记录到系统的审计日志中。

因为任何系统的安全保护措施都不是完美无缺的,蓄意盗窃破坏数据的人总可能存在。

利用数据库的审计功能,DBA 可以根据审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。

2022年山西大学信息管理与信息系统专业《数据库概论》科目期末试卷B(有答案)

2022年山西大学信息管理与信息系统专业《数据库概论》科目期末试卷B(有答案)

2022年山西大学信息管理与信息系统专业《数据库概论》科目期末试卷B(有答案)一、填空题1、在关系数据库的规范化理论中,在执行“分解”时,必须遵守规范化原则:保持原有的依赖关系和______。

2、使某个事务永远处于等待状态,得不到执行的现象称为______。

有两个或两个以上的事务处于等待状态,每个事务都在等待其中另一个事务解除封锁,它才能继续下去,结果任何一个事务都无法执行,这种现象称为______。

3、有两种基本类型的锁,它们是______和______。

4、在设计局部E-R图时,由于各个子系统分别有不同的应用,而且往往是由不同的设计人员设计,所以各个局部E-R图之间难免有不一致的地方,称为冲突。

这些冲突主要有______、______和______3类。

5、在SQL语言中,为了数据库的安全性,设置了对数据的存取进行控制的语句,对用户授权使用____________语句,收回所授的权限使用____________语句。

6、设有关系模式R(A,B,C)和S(E,A,F),若R.A是R的主码,S.A是S的外码,则S.A的值或者等于R中某个元组的主码值,或者______取空值,这是规则,它是通过______和______约束来实现的。

7、关系数据库中基于数学的两类运算是______________和______________。

8、数据库管理系统的主要功能有______________、______________、数据库的运行管理以及数据库的建立和维护等4个方面。

9、完整性约束条件作用的对象有属性、______和______三种。

10、设某数据库中有作者表(作者号,城市)和出版商表(出版商号,城市),请补全如下查询语句,使该查询语句能查询作者和出版商所在的全部不重复的城市。

SELECT城市FROM作者表_____SELECT城市FROM出版商表;二、判断题11、在一个关系中,不同的列可以对应同一个域,但必须具有不同的列名。

两阶段封锁协议

两阶段封锁协议

(转)两阶段封锁协议2009-10-23 14:04一、两段锁协议的内容1. 在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁2. 在释放一个封锁之后,事务不再获得任何其他封锁。

“两段”锁的含义事务分为两个阶段:第一阶段是获得封锁,也称为扩展阶段;第二阶段是释放封锁,也称为收缩阶段。

例:事务1的封锁序列:Slock A ... Slock B ... Xlock C ... Unlock B ... Unlock A ... Unlock C;事务2的封锁序列:Slock A ... Unlock A ... Slock B ... Xlock C ... Unlock C ... Unlock B;事务1遵守两段锁协议,而事务2不遵守两段协议。

并行执行的所有事务均遵守两段锁协议,则对这些事务的所有并行调度策略都是可串行化的。

所有遵守两段锁协议的事务,其并行执行的结果一定是正确的。

事务遵守两段锁协议是可串行化调度的充分条件,而不是必要条件。

可串行化的调度中,不一定所有事务都必须符合两段锁协议。

二、两段锁协议与防止死锁的一次封锁法一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行,因此一次封锁法遵守两段锁协议,但是两段锁协议并不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁。

三、两段锁协议与三级封锁协议两类不同目的的协议两段锁协议:保证并发调度的正确性三级封锁协议:在不同程度上保证数据一致性遵守第三级封锁协议必然遵守两段协议转自:/yxdh/computer/sjk/htm/8.6.htm(另外参考/u2/70714/showart_1004098.html)相关概念转自/jsjlw/20090312/822521_1.html的:封锁通常具有3个环节:第一个环节是申请加锁,即事务在操作前要对它将使用的数据提出加锁申请;第二个环节是获得锁,即当条件成熟时,系统答应事务对数据进行加锁,从而事务获得数据的控制权;第三个环节是释放锁,即完成操作后事务放弃数据的控制权。

事务调度与并发控制_真题-无答案

事务调度与并发控制_真题-无答案

事务调度与并发控制(总分80,考试时间90分钟)一、选择题1. 某系统中事务T1从账户A转出资金到账户B中,在此事务执行过程中,另一事务T2要进行所有账户金额统计操作。

在T1和T2事务成功提交后,数据库服务器突然掉电重启。

为了保证T2事务统计结果及重启后A,B两账户金额正确,需利用到的事务性质分别是______。

A.一致性和隔离性 B.隔离性和持久性 C.原子性和一致性 D.原子性和持久性2. 在SQL Server 2000中,某数据库中有教师表(教师号,姓名,职称),其中教师号的数据类型是整型,其他均为字符类型。

若教师表中当前没有数据,用户在数据库中依次执行下列语句:Ⅰ.BEGIN TRANSACTION T1Ⅱ.INSERT INTO 教师表V ALUES(1000, '张三', '助教');Ⅲ.INSERT INTO 教师表V ALUES(1001, '王二', '助教');Ⅳ.COMMIT T1;Ⅴ.BEGIN TRANSACTION T2;Ⅵ.INSERT INTO 教师表V ALUES(1002, '王三', '讲师');Ⅶ.INSERT INTO 教师表V ALUES(1003, '李四', '讲师');Ⅷ.COMMIT T2;在Ⅶ执行的时候数据库所在的服务器突然掉电,当数据库系统重新启动后,教师表中包含的数据条数为______。

A.4条 B.3条 C.2条 D.0条3. 事务T0、T1和T2并发访问数据项A、B和C,下列属于冲突操作的是______。

A.T0中的read(A)和T0中的write(A) B.T0中的read(B)和T2中的read(C) C.T0中的write(A)和T2中的write(C) D.T1中的read(C)和T2中的write(C)4. 事务是数据库技术中一个非常重要的概念。

王珊《数据库系统概论》章节题库(并发控制)【圣才出品】

王珊《数据库系统概论》章节题库(并发控制)【圣才出品】

第11章并发控制一、选择题1.实现数据库并发控制的主要方法是()。

A.授权B.索引C.日志D.封锁【答案】D【解析】数据库管理系统对事务的并发执行进行控制,以保证数据库一致性,最常用的方法是封锁的方法,即当一个事务访问某个数据项时,以一定的方式锁住该数据项,从而限制其他事务对该数据项的访问。

2.在并发控制技术中最常用的是封锁,对于共享锁(S)和排他锁(X)来说,下面列出的相容关系中,哪一个是正确的()。

A.X-X:相容B.S-S:相容C.S-X:相容D.X-S:相容【答案】B【解析】为了避免发生并发操作引起的数据不一致性问题,则采用数据封锁技术实现并发控制。

封锁是防止存取同一资源的用户之间相互干扰的机制,即当一个用户对数据库某个数据对象执行修改操作时,对该部分数据加锁,拒绝其他用户对该部分的并发访问要求,直至该事务执行完毕才释放数据对象;所以只有当两事务都是读取数据且都加S锁时才相容。

3.如果系统发生死锁,参与死锁的进程的个数至少是()个。

A.3B.1C.2D.4【答案】C【解析】由于各进程互相独立地活动,不断申请和释放软硬件资源,可能会出现这样一种状态:两个或两个以上的进程彼此等待对方拥有的而又不会释放的资源,则所有进程都不能进一步向前运行,这种状态就称为死锁。

因此,参与死锁的进程至少是两个。

4.对数据对象施加封锁可能会引起活锁和死锁问题,避免活锁的简单方法是采用()的策略。

A.顺序封锁法B.依次封锁法C.优先级高先服务D.先来先服务【答案】D【解析】活锁:某个事务永远得不到对某个数据资源的封锁,从而永远处于等待状态的现象;采用先来先服务的策略可以有效地避免活锁。

5.二级封锁协议可防止()。

A.不可重复读、丢失修改B.读“脏”数据C.读“脏”数据、丢失修改D.不可重复读、读“脏”数据【答案】C【解析】一级封锁协议可防止丢失修改;二级封锁协议可以防止丢失修改和读“脏”数据;三级封锁协议可防止丢失修改、读“脏”数据和不可重复读。

两段锁协议

两段锁协议

遵守两段锁协议的可串行化调度
左图的调度是遵守两段锁协 议的,因此一定是一个可行 化调度。
如何验证?
两段锁协议
• 事务遵守两段锁协议是可串行化调度的充分条件,而不是 必要条件。
• 若并发事务都遵守两段锁协议,则对这些事务的任何并发 调度策略都是可串行化的
• 若并发事务的一个调度是可串行化的,不一定所有事务都 符合两段锁协议
Slock A Slock B Xlock C Unlock B Unlock A Unlock C;
|← →|
扩展阶段
→| |←
收缩阶段
事务Tj不遵守两段锁协议,其封锁序列是:
Slock A Unlock A Slock B Xlock C Unlock C Unlock B;
两段锁协议
事务T1 Slock A R(A)=260
两段锁协议
• “两段”锁的含义
事务分为两个阶段 • 第一阶段是获得封锁,也称为扩展阶段
事务可以申请获得任何数据项上的任何类型的锁,但是 不能释放任何锁
• 第二阶段是释放封锁,也称为收缩阶段
事务可以释放任何数据项上的任何类型的锁,但是不能 再申请任何锁
两段锁协议

事务Ti遵守两段锁协议,其封锁序列是 :
Xlock A W(A)=160
Slock B R(B)=1000 Xlock B W(B)=1100 Unlock A
Unlock B
事务T2
Slock C R(C)=300
Xlock C W(C)=250 Slock A 等待 等待 等待 等待 等待 R(A)=160 Xlock A
W(A)=210 Unlock C
• 参见爱课程网11.5节动画《两段锁协议》

大学《数据库原理与应用》考试题库及答案

大学《数据库原理与应用》考试题库及答案

从E-R模型向关系模型转换时,一个M:N联系转换为关系模式,该关系模式的关键字是A. 重新设计新的关键字B. N端实体的关键字C. M端实体的关键字D. M端实体的关键字与N端实体的关键字回答错误!正确答案: D若事务T获得了数据对象R的X锁控制权,则T对R收藏A.不可读也不可写B.只可读C.只可写D.可读也可写一级封锁协议可以保证A.丢失修改B.以上都不对C.不读脏数据D可重复读下面描述正确的是A.相关子查询的效率高B.exist引导的查询都可以用in引导的查询实现C.in引导的查询都不可以用exist引导的查询实现D.in引导的查询都可以用exist引导的查询实现数据库系统通常提供授权功能来控制不同用户访问数据的权限,这主要为了实现数据库的B.安全性C.并发控制D.恢复保护数据库,防止未经授权的或不合法的使用造成的数据泄漏、更改破坏。

这是指数据的A.恢复B.完整性C.安全性D.并发控制下面不属于数据字典的有收藏A.数据结构B.数据项C.数据流图D.数据存储SQL语言可以使用下列哪条语句来进行插入元组收藏A.deleteB.selectC.insertD.update4、下列不属于数据模型的是B.概念模型C.层次模型D.网状模型基本E-R图向关系模型转换是对派生属性如何处理A.为其创建一个新的关系模式B.以上都不对C.展平技术,忽略复合属性本身,直接使用其成分属性代替D.忽略创建模式的语句是收藏A.create schemaB.create indexC.create viewD.create tableSQL语言可以使用下列哪条语句来执行查询A.updateB.deleteC.insertD.SELETCT下面描述正确的有收藏A.行列子集视图可以更新B.基于聚集函数的视图可以更新C.所有的视图都不可以更新D.所有的视图都可以更新分E-R图的设计是在A.物理结构设计阶段B.需求分析阶段C.逻辑结构设计阶段D概念结构设计阶段2NF的不彻底性表现在A.非主属性对码的部分依赖B.非主属性对码的传递依赖C.主属性对码的部分依赖D.主属性对码的传递依赖查询和王丽丽在同一个专业学习的学生的学号和姓名,不可以用收藏A.单表查询B.连接查询实现C.in引导的嵌套查询实现D. exist引导的嵌套查询实体集E1中的每个实体都可以与E2中的任意多个实体相关联,且E2中的每个实体也都可以与E1中任意多个实体相关联,则它们之间的联系属于()A.多对多B.多对一C.一对一D.一对多7、涉及数据物理结构描述的模式是_____________A.外模式B.逻辑模式C.内模式D.模式下列哪个语句用于创建模糊查询A.ORDERB.NULLC.LIKED.GROUP实体集E1中的每个实体最多与实体集E2中的一个实体相关联,并且E2中的每个实体也最多与E1中的一个实体相关联,则E1和E2之间的联系属于()A.一对一B.一对多C.多对多D.多对一一个属性能被划分为更小部分的属性,该属性属于()A.复合属性B.派生属性C.简单属性D.多值属性后援副本的用途是A.数据的转储B.安全性保证C.故障后的恢复D.一致性控制创建视图的语句是收藏A.create viewB.create tableC.create schemaD.create index如果一个关系模式只有两个属性构成,那一定可以达到A.2NFB.BCNFC.3NFD. 1NF3、下面关于SQL语言特点不正确的是A.集多种数据库语言于一体B.面向记录的使用方式C.功能强大,语言简洁D.高度非过程化SQL语言可以使用下列哪条语句来进行修改元组收藏A.insertB.updateC.selectD.delete关于死锁,下列说法中正确的是A.只有出现并发操作时,才有可能出现死锁B.死锁是操作系统中的问题,数据库操作中不存在C.当两个用户竞争相同资源时不会发生死锁D.在数据库操作中防止死锁的方法是禁止两个用户同时操作数据库关于并发调度下面说法正确的是A.一个并发调度一定是正确的B.一个并发调度一定是不正确的C.一个并发调度是正确的如果它和某个串行调度结果相同D.一个并发调度是正确的如果它和某个串行调度结果不相同外模式设计是在A.物理结构设计阶段B.逻辑结构设计阶段C.概念结构设计阶段D. 需求分析阶段由属于R并属于S的所有元组组成的结果关系是A.差B.选择C.并D.交若系统在运行过程中,由于某种原因,造成系统停止运行,致使事务在执行过程中以非控制方式终止,这是内存中的信息丢失,而存储在外存上的数据未受影响,这种情况称为A.计算机病毒B.系统故障C.事务故障D. 介质故障数据库系统通常提供授权功能来控制不同用户访问数据的权限,这主要为了实现数据库的A.完整性B.安全性C.并发控制D.恢复一个属性可以取多个值,该属性属于()A.派生属性B.复合属性C.简单属性D. 多值属性下列动态约束不正确的是收藏A.从学士到博士B.从博士到学士C.从硕士到博士D.从学士到硕士题型描述: 单选题只有一个正确答案后援副本的用途是A.数据的转储B.安全性保证C.=故障后的恢复D.一致性控制可以得到一个一致性副本的是A.静态转储B.动态转储C.海量动态转储D. 增量动态转储关于死锁,下列说法中正确的是A.只有出现并发操作时,才有可能出现死锁B.死锁是操作系统中的问题,数据库操作中不存在C.当两个用户竞争相同资源时不会发生死锁D.在数据库操作中防止死锁的方法是禁止两个用户同时操作数据库redo操作是A.维持新值不变B.维持旧值不变C.以旧值代替新值D.以新值代替旧值3、用户所使用的数据视图的描述称为_____________。

两段锁协议

两段锁协议
事务T1 Slock B R(B)=2 Slock A R(A)=2 事务T2
Xlock A
等待 等待 Xlock A 等待
遵守两段锁协议的事务可能发生死锁
左图的调度是遵守两段锁协 议的,因此一定是一个可行
Slock B R(B)=1000 Xlock B W(B)=1100 Unlock A
化调度。
如何验证?
Unlock B
两段锁协议
• 事务遵守两段锁协议是可串行化调度的充分条件,而不是 必要条件。 • 若并发事务都遵守两段锁协议,则对这些事务的任何并发 调度策略都是可串行化的 • 若并发事务的一个调度是可串行化的,不一定所有事务都 符合两段锁协议 • 参见爱课程网11.5节动画《两段锁协议》
事务分为两个阶段 • 第一阶段是获得封锁,也称为扩展阶段
事务可以申请获得任何数据项上的任何类型的锁,但是
不能释放任何锁
ቤተ መጻሕፍቲ ባይዱ
• 第二阶段是释放封锁,也称为收缩阶段
事务可以释放任何数据项上的任何类型的锁,但是不能
再申请任何锁
两段锁协议

事务Ti遵守两段锁协议,其封锁序列是 :
Slock A Slock B Xlock C |← →| Unlock B Unlock A Unlock C; →| |← 收缩阶段
扩展阶段
事务Tj不遵守两段锁协议,其封锁序列是:
Slock A Unlock A Slock B Xlock C Unlock C Unlock B;
两段锁协议
事务T1 Slock A R(A)=260 Slock C R(C)=300 Xlock A W(A)=160 Xlock C W(C)=250 Slock A 等待 等待 等待 等待 等待 R(A)=160 Xlock A W(A)=210 Unlock C 遵守两段锁协议的可串行化调度 事务T2
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

竭诚为您提供优质文档/双击可除二级封锁协议能否避免死锁篇一:数据库中的封锁协议并发产生的数据不一致有:丢失修改,读脏数据,不可重复读两种锁:s锁(共享锁,读锁),x锁(排它锁,写锁)加s锁后,本事务就只能读取数据而不能修改。

其他事务可以加s锁来读取数据,但不能加x锁修改数据。

即:只要数据上有s锁,任何事务都只能再对其加s锁读取,而不能加x锁修改。

加x锁后,本事务可以读取和修改数据。

其他事务不能加任何锁,从而也不能读取和修改数据。

封锁协议有:三级封锁协议以及两段锁协议一级封锁协议:写数据前加x锁,事务结束释放x锁。

解决丢失修改问题。

二级封锁协议:一级之上,读数据前加s锁,读完释放s锁。

一级之上解决读脏数据问题。

三级封锁协议:二级之上,事务结束才释放s锁。

二级之上解决不可重复读问题。

两段锁协议(2pl):读数据前加s锁,写数据前加x锁,事务结束时才释放。

当要修改数据时,事务应对已加的s锁升级为x锁。

事务释放一个封锁后,不再申请其它任何封锁。

即一个事务如果对不同数据加锁,解锁都是放到后面一块儿进行的。

注意,以前一直弄错,这儿是一个事务,如果是并发事务,a事务的解锁可以放到b事务之前。

两段锁协议解决的是事务并发时的正确调度,并不能解决死锁。

注意:如果两个事务都对同一数据有读和写,那么可以不加s锁,直接上x锁。

篇二:并发控制课后答案第八章并发控制习题解答和解析1.1.在数据库中为什么要并发控制答:数据库是共享资源,通常有许多个事务同时在运行。

当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。

若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。

所以数据库管理系统必须提供并发控制机制。

2.2.并发操作可能会产生哪几类数据不一致用什么方法能避免各种不一致的情况答:并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读"脏"数据。

(1)丢失修改(lostupdate)两个事务t1和t2读入同一数据并修改,t2提交的结果破坏了(覆盖了)t1提交的结果,导致t1的修改被丢失。

(2)不可重复读(non-RepeatableRead)不可重复读是指事务t1读取数据后,事务t2执行更新操作,使t1无法再现前一次读取结果。

不可重复读包括三种情况:详见《概论》8.1(p266)。

(3)读"脏"数据(dirtyRead)读"脏"数据是指事务t1修改某一数据,并将其写回磁盘,事务t2读取同一数据后,t1由于某种原因被撤销,这时t1已修改过的数据恢复原值,t2读到的数据就与数据库中的数据不一致,则t2读到的数据就为"脏"数据,即不正确的数据。

避免不一致性的方法和技术就是并发控制。

最常用的技术是封锁技术。

也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。

3.3.什么是封锁答:封锁就是事务t在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。

加锁后事务t就对该数据对象有了一定的控制,在事务t释放它的锁之前,其他的事务不能更新此数据对象。

封锁是实现并发控制的一个非常重要的技术。

4.4.基本的封锁类型有几种试述它们的含义。

答:基本的封锁类型有两种:排它锁(exclusivelocks,简称x锁)和共享锁(sharelocks,简称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做任何修改。

5.如何用封锁机制保证数据的一致性答:dbms在对数据进行读、写操作之前首先对该数据执行封锁操作,例如下图中事务t1在对a进行修改之前先对a 执行xlock(a),即对a加x锁。

这样,当t2请求对a加x锁时就被拒绝,t2只能等待t1释放a上的锁后才能获得对a 的x锁,这时它读到的a是t1更新后的值,再按此新的a值进行运算。

这样就不会丢失t1的更新。

dbms按照一定的封锁协议,对并发操作进行控制,使得多个并发操作有序地执行,就可以避免丢失修改、不可重复读和读"脏"数据等数据不一致性。

6.什么是封锁协议不同级别的封锁协议的主要区别是什么答:在运用封锁技术对数据加锁时,要约定一些规则。

例如,在运用x锁和s锁对数据对象加锁时,要约定何时申请x锁或s锁、何时释放封锁等。

这些约定或者规则称为封锁协议(lockingprotocol)。

对封锁方式约定不同的规则,就形成了各种不同的封锁协议、不同级别的封锁协议,例如《概论》8.3中介绍的三级封锁协议,三级协议的主要区别在于什么操作需要申请封锁,何时申请封锁以及何时释放锁(即持锁时间的长短)。

一级封锁协议:事务t在修改数据R之前必须先对其加x锁,直到事务结束才释放。

二级封锁协议:一级封锁协议加上事务t在读取数据R之前必须先对其加s锁,读完后即可释放s锁。

三级封锁协议:一级封锁协议加上事务t在读取数据R 之前必须先对其加s锁,直到事务结束才释放。

7.不同封锁协议与系统一致性级别的关系是什么答:不同的封锁协议对应不同的一致性级别。

一级封锁协议可防止丢失修改,并保证事务t是可恢复的。

在一级封锁协议中,对读数据是不加s锁的,所以它不能保证可重复读和不读"脏"数据。

二级封锁协议除防止了丢失修改,还可进一步防止读"脏"数据。

在二级封锁协议中,由于读完数据后立即释放s锁,所以它不能保证可重复读。

在三级封锁协议中,无论是读数据还是写数据都加长锁,即都要到事务结束才释放封锁。

所以三级封锁协议除防止了丢失修改和不读"脏"数据外,还进一步防止了不可重复读。

下面的表格清楚地说明了封锁协议与系统一致性的关系。

8.什么是活锁什么是死锁答:等待unlock等待.等待等待.等待等待.等待等待.等待.等待如果事务t1封锁了数据R,事务t2飞又请求封锁R,于是t2等待。

t3也请求封锁R,当t1释放了R上的封锁之后系统首先批准了t3的请求,t2仍然等待。

然后t4又请求封锁R,当t3释放了R上的封锁之后系统又批准了t4的请求……t2有可能永远等待,这就是活锁的情形。

活锁的含义是该等待事务等待时间太长,似乎被锁住了,实际上可能被激活。

如果事务tl封锁了数据R1,t2封锁了数据R2,然后t1又请求封锁R2,因t2已封锁了R2,于是t1等待t2释放R2上的锁。

接着t2又申请封锁R1,因t1已封锁了R1,t2也只能等待t1释放Rl上的锁。

这样就出现了t1在等待t2,而t2又在等待tl的局面,t1和t2两个事务永远不能结束,形成死锁。

等待等待等待等待9.试述活锁的产生原因和解决方法。

答:活锁产生的原因:当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁。

避免活锁的简单方法是采用先来先服务的策略。

当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中第一个事务获得锁。

10.请给出预防死锁的若干方法。

答:在数据库中,产生死锁的原因是两个或多个事务都已封锁了一些数据对象,然后又都请求已被其他(二级封锁协议能否避免死锁)事务封锁的数据加锁,从而出现死等待。

防止死锁的发生其实就是要破坏产生死锁的条件。

预防死锁通常有两种方法:(1)一次封锁法,要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行;(2)顺序封锁法,预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。

不过,预防死锁的策略不大适合数据库系统的特点,具体原因可参见《概论》8.4。

11.请给出检测死锁发生的一种方法,当发生死锁后如何解除死锁答:数据库系统一般采用允许死锁发生,dbms检测到死锁后加以解除的方法。

dbms中诊断死锁的方法与操作系统类似,一般使用超时法或事务等待图法。

超时法是:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。

超时法实现简单,但有可能误判死锁,事务因其他原因长时间等待超过时限时,系统会误认为发生了死锁。

若时限设置得太长,又不能及时发现死锁发生。

dbms并发控制子系统检测到死锁后,就要设法解除。

通常采用的方法是选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有锁,使其他事务得以继续运行下去。

当然,对撤销的事务所执行的数据修改操作必须加以恢复。

12.什么样的并发调度是正确的调度答:可串行化(sertalizable)的调度是正确的调度。

可串行化的调度的定义:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行执行它们时的结果相同,称这种调度策略为可串行化的调度。

13.设t1,t2,t3是如下的3个事务:t1:a:=a+2;t2:a:=a*2;t3:a:=a**2;设a的初值为0。

(1)若这3个事务允许并行执行,则有多少可能的正确结果,请一一列举出来。

答:a的最终结果可能有2、4、8、16。

因为串行执行次序有t1t2t3、t1t3t2、t2t1t3、t2t3t1、t3t1t2、t3t2t1。

对应的执行结果是16、8、4、2、4、2。

(2)请给出一个可串行化的调度,并给出执行结果答:slockay=a=ounlockaxlockaslocka等待写回等待等待slockaa=y*2等待写回a(=4)等待unlocka等待y=a=4unlockaxlocka写回a(=16)unlocka最后结果a为16,是可串行化的调度。

(3)请给出一个非串行化的调度,并给出执行结果。

答:slockay=a=0slockay=a=0xlocka等待a=y+2写回等待unlockaxlocka等待等待写回a(=4)等待a=y*2写回unlocka最后结果a为0,为非串行化的调度。

(4)若这3个事务都遵守两段锁协议,请给出一个不产生死锁的可串行化调度。

答:slockay=a=oxlocka写回等待等待篇三:数据库中预防死锁通常有两种方法:一种叫(16),它要求每个事物必须一、整体解读试卷紧扣教材和考试说明,从考生熟悉的基础知识入手,多角度、多层次地考查了学生的数学理性思维能力及对数学本质的理解能力,立足基础,先易后难,难易适中,强调应用,不偏不怪,达到了“考基础、考能力、考素质”的目标。

试卷所涉及的知识内容都在考试大纲的范围内,几乎覆盖了高中所学知识的全部重要内容,体现了“重点知识重点考查”的原则。

相关文档
最新文档