第十一章并发控制

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第十一章并发控制

一、选择题

1.为了防止一个用户的工作不适当地影响另一个用户,应该采取()。

A. 完整性控制

B. 访问控制

C. 安全性控制

D. 并发控制

【解答】D

2. 解决并发操作带来的数据不一致问题普遍采用()技术。

A. 封锁

B. 存取控制

C. 恢复

D. 协商

【解答】A

3.下列不属于并发操作带来的问题是()。

A. 丢失修改

B. 不可重复读

C. 死锁

D. 脏读

【解答】C

4. DBMS普遍采用()方法来保证调度的正确性。

A. 索引

B. 授权

C. 封锁

D. 日志

【解答】C

5.事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放,这是()。

A. 一级封锁协议

B. 二级封锁协议

C. 三级封锁协议

D. 零级封锁协议

【解答】A

6.如果事务T获得了数据项Q上的排他锁,则T对Q( c)。

A. 只能读不能写

B. 只能写不能读

C. 既可读又可写

D. 不能读也不能写

【解答】C

7.设事务T1和T2,对数据库中地数据A进行操作,可能有如下几种情况,请问哪一种不会发生冲突操作()。

A. T1正在写A,T2要读A

B. T1正在写A,T2也要写A

C. T1正在读A,T2要写A

D. T1正在读A,T2也要读A

【解答】D

8.如果有两个事务,同时对数据库中同一数据进行操作,不会引起冲突的操作是()。

A. 一个是DELETE,一个是SELECT

B. 一个是SELECT,一个是DELETE

C. 两个都是UPDATE

D. 两个都是SELECT

【解答】D

9.在数据库系统中,死锁属于()。

A. 系统故障

B. 事务故障

C. 介质故障

D. 程序故障

【解答】B

10.下面各项中,属于数据库的并发操作可能带来的问题是__________。

A.丢失更新

B.数据独立性会提高

C.非法用户的使用

D.增加数据冗余度

【解答】A

11.下面哪个不是数据库系统必须提供的数据控制功能__________。

A.安全性B.可移植性C.完整性D.并发控制

【解答】B

二、填空题

1. 若事务T对数据对象A加了S锁,则其他事务只能对数据A再加_________,不能加

_________,直到事务 T释放 A上的锁。

【解答】S锁、X锁

2.为了防止一个用户的工作不适当地影响另一个用户,应该采取的控制措施是__________;保护数据库,防止不合法的使用,以免数据的泄密、更改或破坏,应该采取的控制措施是__________。

【解答】并发控制、安全控制

3.数据库的并发操作会带来三类问题:__________、__________、__________。解决的办法通常是采用“__________”技术。

【解答】丢失更新问题、不一致分析问题、“脏数据”的读出、封锁

4.一个事务如果读取另一个________时,将会出现读“脏”数据问题。

【解答】未提交事务的中间结果

5.__________串行调度是多个事务按照一定的次序依次执行;在某一时刻只有一个事务在执行。在并发调度中,某一时刻有多个事务同时被处理。如果某事务集的一个并发调度的结果与某个串行调度等价,则称此并发调度是__________可串行化调度。

【解答】串行调度、可串行化调度

三、问答题

1. 在数据库中为什么要并发控制?

【解答】数据库是共享资源,通常有许多个事务同时在运行。当多个事务并发地存取数据库时就会产生同时读取和/或修改同一数据的情况。若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性。所以数据库管理系统必须提供并发控制机制。

2. 并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况?

【解答】并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏”数据。

(1)丢失修改(Lost Update)

两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)T1提交的结

果,导致T1的修改被丢失。

(2)不可重复读(Non-Repeatable Read)

不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。

(3)读“脏”数据(Dirty Read)

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

避免不一致性的方法和技术就是并发控制。最常用的并发控制技术是封锁技术。

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

3. 什么是封锁? 基本的封锁类型有几种?试述他们的含义。

【解答】封锁就是一个事务对某个数据对象加锁,取得对它一定的控制,限制其它事务对该数据对象使用。

基本的封锁类型有两种:排它锁(Exclusive Locks,简称 X锁)和共享锁(Share Locks,简称 S锁)。

排它锁(X锁,eXclusive lock,写锁):事务T对数据对象R加上X锁,则其它事务对R的任何封锁请求都不能成功,直至T释放R上的X锁。

共享锁(S锁,Share lock,读锁):事务T对数据对象R加上S锁,则其它事务对R 的X锁请求不能成功,而对R的S锁请求可以成功。

4.什么是封锁协议?不同级别的封锁协议的主要区别是什么?

【解答】封锁协议:何时申请封锁、申请什么样的封锁、何时释放封锁的规则称为封锁协议。封锁协议分为3级:

1级封锁协议:写数据加排他锁,直到事务结束才释放;

2级封锁协议:写数据加排他锁,直到事务结束才释放,读数据加共享锁,读完即释放;

3级封锁协议:写数据加排他锁,直到事务结束才释放,读数据加共享锁,直到事务结束才释放。

5.不同封锁协议与系统一致性级别的关系是什么?

【解答】1级封锁协议:避免了丢失修改;2级封锁协议:避免了丢失修改和读脏数据;3级封锁协议:避免了丢失修改、读脏数据和不可重复读。

6.请给出检测死锁发生的一种方法,当发生死锁后如何解除死锁。

【解答】死锁检测方法可以采用等待图法;检测发现死锁后,撤消代价较小的事务,并对该事务做恢复处理,从而解除死锁。

7.什么样的并发调度是正确的调度?

【解答】多个事务并发执行时,其结果与某一串行调度的结果相同,称这种调度为可串行化的。可串行化的调度称为正确的调度。

8.设T1,T2,T3是如下的三个事务,设A的初值为0;

相关文档
最新文档