当前位置:文档之家› 第十一章并发控制

第十一章并发控制

第十一章并发控制
第十一章并发控制

第十一章并发控制

一、选择题

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;

T1: A:=A+2

T2: A:=A*2

T3: A:=A**2( A <-A*A)

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

(2)请给出一个可串行化的调度,并给出执行结果;

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

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

(5)若这三个事务都遵守两段锁协议,请给出一个产生死锁的调度。

【解答】

(1)正确结果:T1-T2-T3,结果为16;T1-T3-T2,结果为8;T2-T1-T3,结果为4;T2-T3-T1,结果为2;T3-T1-T2,结果为4;T3-T2-T1,结果为2;四种正确结果:16、8、4、2。

(2)可串行化调度:执行结果为8。

(3)最后结果A 为0 ,为非串行化的调度。

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

【解答】在运用封锁技术对数据加锁时,要约定一些规则。例如,在运用X锁和S锁对数据对象加锁时,要约定何时申请X锁或S锁、何时释放封锁等。这些约定或者规则称为封锁协议(Locking Protocol)。对封锁方式约定不同的规则,就形成了各种不同的封锁协议。不同级别的封锁协议,例如《概论》中介绍的三级封锁协议,三级协议的主要区别在于什么操作需要申请封锁,何时申请封锁以及何时释放锁(即持锁时间的长短)。

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

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

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

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

【解答】不同的封锁协议对应不同的一致性级别。

一级封锁协议可防止丢失修改,并保证事务T是可恢复的。在一级封锁协议中,对读数据是不加S锁的,所以它不能保证可重复读和不读“脏”数据。

二级封锁协议除防止了丢失修改,还可进一步防止读“脏”数据。在二级封锁协议中,由于读完数据后立即释放S锁,所以它不能保证可重复读。

在三级封锁协议中,无论是读数据还是写数据都加长锁,即都要到事务结束时才释放封锁。所以三级封锁协议除防止了丢失修改和不读“脏”数据外,还进一步防止了不可重复读。

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

【解答】活锁产生的原因:当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务

无限期等待某个封锁,从而导致活锁。

避免活锁的简单方法是采用先来先服务的策略。当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中第一个事务获得锁。

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

【解答】在数据库中,产生死锁的原因是两个或多个事务都已封锁了一些数据对象,然后又都请求已被其他事务封锁的数据加锁,从而出现死等待。

防止死锁的发生其实就是要破坏产生死锁的条件。预防死锁通常有两种方法:

(1)一次封锁法

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

(2)顺序封锁法

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

不过,预防死锁的策略不大适合数据库系统的特点。

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

【解答】数据库系统一般采用允许死锁发生,DBMS检测到死锁后加以解除的方法。

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

超时法是:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。超时法实现简单,但有可能误判死锁,事务因其他原因长时间等待超过时限时,系统会误认为发生了死锁。若时限设置得太长,又不能及时发现死锁发生。

DBMS并发控制子系统检测到死锁后,就要设法解除。通常采用的方法是选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有锁,使其他事务得以继续运行下去。当然,对撤销的事务所执行的数据修改操作必须加以恢复。

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

【解答】可串行化(Serializable)的调度是正确的调度。

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

15. 试述两段锁协议的概念。

【解答】两段锁协议是指所有事务必须分两个阶段对数据项加锁和解锁。

· 在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;

· 在释放一个封锁之后,事务不再申请和获得任何其他封锁。

“两段”的含义是,事务分为两个阶段:

第一阶段是获得封锁,也称为扩展阶段。在这阶段,事务可以申请获得任何数据项上的任何类型的锁,但是不能释放任何锁。

第二阶段是释放封锁,也称为收缩阶段。在这阶段,事务释放已经获得的锁,但是不能再申请任何锁。

16. 为什么要引进意向锁?意向锁的含义是什么?

【解答】引进意向锁是为了提高封锁子系统的效率。该封锁子系统支持多种封锁粒度。

原因是:在多粒度封锁方法中一个数据对象可能以两种方式加锁—显式封锁和隐式封锁。因此系统在对某一数据对象加锁时不仅要检查该数据对象上有无(显式和隐式)封锁与之冲突;还要检查其所有上级结点和所有下级结点,看申请的封锁是否与这些结点上的(显式和隐式)封锁冲突;显然,这样的检查方法效率很低。为此引进了意向锁。

意向锁的含义是:对任一结点加锁时,必须先对它的上层结点加意向锁。

例如事务T要对某个元组加X锁,则首先要对关系和数据库加IX锁。换言之,对关系和数据库加IX锁,表示它的后裔结点—某个元组拟(意向)加X锁。

引进意向锁后,系统对某一数据对象加锁时不必逐个检查与下一级结点的封锁冲突了。例如,事务T要对关系R加X锁时,系统只要检查根结点数据库和R本身是否已加了不相容的锁(如发现已经加了IX,则与X冲突),而不再需要搜索和检查R中的每一个元组是否加了X锁或S锁。

17. 试述常用的意向锁:IS锁,IX锁,SIX锁,给出这些锁的相容矩阵。

【解答】IS锁:如果对一个数据对象加IS锁,表示它的后裔结点拟(意向)加S锁。例如,要对某个元组加S锁,则要首先对关系和数据库加IS锁

IX锁:如果对一个数据对象加IX锁,表示它的后裔结点拟(意向)加X锁。例如,要对某个元组加X锁,则要首先对关系和数据库加IX锁。

SIX锁:如果对一个数据对象加SIX锁,表示对它加S锁,再加IX锁,即SIX = S + IX。

相容矩阵:

18.如何用封锁机制保证数据的一致性?

【解答】DBMS 在对数据进行读、写操作之前首先对该数据执行封锁操作,例如下图中事务Tl 在对A 进行修改之前先对A 执行xock ( A ) ,即对A 加x 锁。这样,当几请求对A 加x 锁时就被拒绝,几只能等待Tl 释放A 上的锁后才能获得对A 的x 锁,这时它读到的A 是Tl 更新后的值,再按此新的A 值进行运算。这样就不会丢失Tl 的更新。

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

19.试证明,若并发事务遵守两段锁协议,则对这些事务的并发调度是可串行化的。

【解答】

证明:首先以两个并发事务 Tl 和T2为例,存在多个并发事务的情形可以类推。根据可串行化定义可知,事务不可串行化只可能发生在下列两种情况:

(l)事务 Tl 写某个数据对象 A ,T2读或写 A ;

(2)事务 Tl 读或写某个数据对象 A ,T2写 A 。

下面称 A 为潜在冲突对象。设 Tl 和T2访问的潜在冲突的公共对象为{A1,A2 …,An }。不失一般性,假设这组潜在冲突对象中 X =(A 1 , A2 ,…, Ai )均符合情况 1 。Y ={A i + 1 ,…, An }符合所情况(2)。

VX ∈ x , Tl 需要 XlockX ①

T2 需要 Slockx 或 Xlockx ②

1)如果操作①先执行,则 Tl 获得锁,T2等待

由于遵守两段锁协议, Tl 在成功获得 x 和 Y 中全部对象及非潜在冲突对象的锁后,才会释放锁,这时如果存在 w ∈ x 或 Y ,T2已获得 w 的锁,则出现死锁;否则, Tl 在对 x 、 Y 中对象全部处理完毕后,T2才能执行。这相当于按 Tl 、T2的顺序串行执行,根据可串行化定义, Tl 和几的调度是可串行化的。

2 )操作②先执行的情况与( l )对称因此,若并发事务遵守两段锁协议,在不发生死锁的情况下,对这些事务的并发调度一定是可串行化的。

20.在数据库系统中有如下一个调度S,它涉及到5个不同的事务T1、T2、T3、T4和T5。请问调度S是冲突可串行化的吗?为什么?如果调度S是冲突可串行化的,就请给出与之等价的一个串行调度序列。

【解答】首先要给出该调度的优先图:调度的优先图中没有有向环,因此该调度是冲突可串行化的。可串行化的顺序是T1、T2、T3、T4、T5;或T1、T2、T4、T3、T5;

第十一章并发控制

第十一章并发控制 一、选择题 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.下面各项中,属于数据库的并发操作可能带来的问题是__________。

第11章 并发控制(习题集)

第十一章并发控制(习题集) 二、选择题 1、为了防止一个用户的工作不适当地影响另一个用户,应该采取(D)。 A. 完整性控制 B. 访问控制 C. 安全性控制 D. 并发控制 2、解决并发操作带来的数据不一致问题普遍采用(A)技术。 A. 封锁 B. 存取控制 C. 恢复 D. 协商 3、下列不属于并发操作带来的问题是(C)。 A. 丢失修改 B. 不可重复读 C. 死锁 D. 脏读 4、DBMS普遍采用(C)方法来保证调度的正确性。 A. 索引 B. 授权 C. 封锁 D. 日志 5、如果事务T获得了数据项Q上的排他锁,则T对Q(C)。 A. 只能读不能写 B. 只能写不能读 C. 既可读又可写 D. 不能读也不能写 6、设事务T1和T2,对数据库中地数据A进行操作,可能有如下几种情况,请问哪一种不会发生冲突操作(D)。 A. T1正在写A,T2要读A B. T1正在写A,T2也要写A C. T1正在读A,T2要写A D. T1正在读A,T2也要读A 7、如果有两个事务,同时对数据库中同一数据进行操作,不会引起冲突的操作是(D)。 A. 一个是DELETE,一个是SELECT B. 一个是SELECT,一个是DELETE C. 两个都是UPDATE D. 两个都是SELECT 8、在数据库系统中,死锁属于(B)。 A. 系统故障 B. 事务故障 C. 介质故障 D. 程序故障 9、数据库中的封锁机制是( C )的主要方法。 A、完整性 B、安全性 C、并发控制 D、恢复 三、填空题 1、基本的封锁类型有两种:__排他锁__ 和_共享锁_ 。 2、并发操作可能会导致:丢失修改、不可重复读、读脏数据。 四、简答题

第十一章练习题及答案

第十一章数据库并发控制 一、选择题 1.为了防止一个用户的工作不适当地影响另一个用户,应该采取(D )。 A. 完整性控制 B. 访问控制 C. 安全性控制 D. 并发控制 2. 解决并发操作带来的数据不一致问题普遍采用(A)技术。 A. 封锁 B. 存取控制 C. 恢复 D. 协商 3.下列不属于并发操作带来的问题是(C)。 A. 丢失修改 B. 不可重复读 C. 死锁 D. 脏读 4.DBMS普遍采用(C)方法来保证调度的正确性。 A. 索引 B. 授权 C. 封锁 D. 日志 5.事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放,这是(A)。 A. 一级封锁协议 B. 二级封锁协议 C. 三级封锁协议 D. 零级封锁协议 6.如果事务T获得了数据项Q上的排他锁,则T对Q(C )。 A. 只能读不能写 B. 只能写不能读 C. 既可读又可写 D. 不能读也不能写7.设事务T1和T2,对数据库中地数据A进行操作,可能有如下几种情况,请问哪一种不会发生冲突操作(D )。 A. T1正在写A,T2要读A B. T1正在写A,T2也要写A C. T1正在读A,T2要写A D. T1正在读A,T2也要读A 8.如果有两个事务,同时对数据库中同一数据进行操作,不会引起冲突的操作是(D )。 A. 一个是DELETE,一个是SELECT B. 一个是SELECT,一个是DELETE C. 两个都是UPDATE D. 两个都是SELECT 9.在数据库系统中,死锁属于(B)。 A. 系统故障 B. 事务故障 C. 介质故障 D. 程序故障 选择题答案: (1) D (2) A (3) C (4) C (5) A (6) C (7) D (8) D (9) B 二、简答题 1. 并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况? 答:并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏”数据。(1)丢失修改(Lost Update) 两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)T1提交的结果,导致T1的修改被丢失。 (2)不可重复读(Non-Repeatable Read) 不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。 (3)读“脏”数据(Dirty Read) 读“脏”数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为“脏”数据,即不正确的数据。 避免不一致性的方法和技术就是并发控制。最常用的并发控制技术是封锁技术。也可以

安徽工业大学数据库第十一章习题解答

第十一章并发控制 1.并发操作可能会产生哪几类数据不一致性?用什么方法能避免各种不一致 性的情况。 答:数据库的并发操作所带来的数据不一致性有三类:丢失更新问题、不一致性分析问题和读“脏”数据问题。对于并发操作带来的问题,通常采用并发控制的方法调度并发操作,避免造成数据的不一致性,使一个用户事务的执行不受其他事务的干扰。 2.为什么D M L锁只能提供解除S封锁的操作,而不提供解除X封锁的操作。 答:为防止由事务的ROLLBACK操作引起的丢失更新操作,X封锁必须保留到事务终点。即X封锁不是用UNLOCK操作解除的,而是在事务结束的语义中包含了对X封锁的解除,因此,DML不提供解除X封锁的操作。而为增加事务并发操作的程度,未到事务终点时,用户可以使用DML提供的专门解除S封锁的操作,随时解除事务的S封锁,这是因为被S封锁的数据不可能是未提交的修改。 3.为什么有些封锁需保留到事务终点,而有些封锁可随时解除。 答:为防止由事务的ROLLBACK操作引起的丢失更新操作,X封锁必须保留到事务终点。而被S封锁的数据不可能是未提交的修改,因此可以随时解除事务的S封锁,达到增加事务并发操作的程度。

4.设T1、T2、T3是如下的三个事务: T1:A:=A+2; T2:A:=A*2; T3:A:=A**2(A←A2) 设A的初值为0。 ⑴若这三个事务允许并发执行,则有多少种可能的正确结果,请一一列举 出来; ⑵请给出一个可串行化的调度,并给出执行结果; ⑶请给出一个非串行化的调度,并给出执行结果; ⑷若这三个事务都遵守两段锁协议,请给出一个不产生死锁的可串行化调 度; ⑸若这三个事务都遵守两段锁协议,请给出一个产生死锁的调度。 解: ⑴A的最终结果可能有2、4、8、16。 因为串行执行次序有T1→T2→T3、T1→T3→T2、T2→T1→T3、T2→T3→T1、 T3→T1→T2、T3→T2→T1,对应的执行结果是16、8、4、2、4、2。

第11章 决策分析

第11章决策分析 一、选择 1. 在实际中,要求完美信息价值(EVPI)( C )调查预测费用才有实际经济价值。 A 小于 B 等于 C 大于 D 无关 2.完整的决策过程:一是确定目标,二是收集信息,三是提出方案,四是( A ),五是实 施。 A 方案选优 B 分析决策 C 决策环境调查 D 检查 3. 乐观主义决策准则又称为(B ) A max min决策准则 B max max决策准则 C min max决策准则 D Laplace决策准则 4. 决策按问题的性质和条件,可分为四种,下面不属于该类的决策是(D ) A、确定型 B、不确定型 C风险型 D、战略决策 5.乐观主义决策准则又称为(B ) A、max min决策准则 B、max max决策准则 C、min max决策准则 D、Laplace决策准则 6.决策的五要素:决策者,可供选择的方案,客观环境,可测知方案的结果,(C ) A 决策目标 B信息收集 C 衡量结果的评价标准 D 预测 7. 悲观主义决策准则又称为(a ) A、max min决策准则 B、max max决策准则 C、min max决策准则 D、Laplace决策准则 8. 最大收益期望值(EMV)决策准则中各事件的发生概率是( B ) A不可估算的 B 是可以估算的 C是相等的概率 D 1 9.在决策树中,决策点用(A )表示。 A □ B ○ C △ D ◇ 10.在决策树中,事件点用(B )表示 A □ B ○ C △ D ◇ 二、填空 1.等可能性决策准则又称(拉普拉斯准则)。 2.决策按内容和层次,可分为(战略决策)和(战术决策)。 3.决策按重复程度,可分为(程序决策)和(非程序决策) 4.决策按问题性质和条件,可分为(确定型)、(不确定型)、(风险型)和(竞争型决策)。 5.决策按时间可划分为(长期决策)、(中期决策)和(短期决策)。 6.决策按达到的目标分(单目标决策)、(多目标决策) 7.决策按阶段分为(单阶段决策)和(多阶段决策) 8.决策按决策人参与情况分为(个人决策)和(群体决策)。

数据库第四版答案(王珊 萨师煊)第11章 并发控制

数据库第四版答案数据库第四版答案((王珊萨师煊萨师煊) )第11章并发控制1.在数据库中为什么要并发控制? 答:数据库是共享资源,通常有许多个事务同时在运行答:数据库是共享资源,通常有许多个事务同时在运行。 。当多个事务并发地存取数据库时就会产生同时读取和/或修 改同一数据的情况改同一数据的情况。 。若对并发操作不加控制就可能会存取和存储不正确的数据存储不正确的数据,,破坏数据库的一致性破坏数据库的一致性。 。所以数据库管理系统必须提供并发控制机制。 2.并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况? 答:并发操作带来的数据不一致性包括三类:丢失修改答:并发操作带来的数据不一致性包括三类:丢失修改、 、不可重复读和读可重复读和读““脏’夕数据。(l )丢失修改丢失修改((lost update ) 两个事务Tl 和T2读入同一数据并修改,读入同一数据并修改,T2 T2提交的结果破坏了(覆盖了)Tl 提交的结果,导致Tl 的修改被丢失的修改被丢失。 。(2)不可重复读(Non 一Repeatable Read )不可重复读是指事务Tl 读取数据后,事务几执行更新操作,使Tl 无法再现前一次读取结果无法再现前一次读取结果。。(3)读“脏”数据(Dirty Read ) 读“脏’夕数据是指事务Tl 修改某一数据修改某一数据, ,并将其写回磁盘,事务几读取同一数据后,Tl 由于某种原因被撤销由于某种原因被撤销, ,这时Tl 已修改过的数据恢复原值已修改过的数据恢复原值, ,几读到的数据就与数据库中的数据不一致中的数据不一致,,则几读到的数据就为则几读到的数据就为““脏”数据数据, ,即不正确的数据确的数据。。避免不一致性的方法和技术就是并发控制避免不一致性的方法和技术就是并发控制。 。最常

第十一章 并发控制

数据库系统原理
李瑞轩 华中科技大学计算机学院

第十一章 并发控制
11.1 并发控制概述 11.2 并发调度的可串行性 11.3 封锁 11.4 活锁和死锁 11.5 两段锁协议 11.6 封锁的粒度
2

? 学习目标
理解并掌握并发控制的基本概念及其必要性 理解并掌握并发调度的可串行性原则 理解并基本掌握基于封锁的并发控制方法
3

11.1 并发控制概述
11.1.1 问题的提出
T1 read(A) A:=A-50 write(A) read(B) B:=B-10 write(B) T2 初始值: A = 100 B = 100
read(B) B:=B+50 write(B) commit T1
read(A) A:=A+10 write(A) commit T2
4

11.1.1 问题的提出 (续)
事务并发执行的必然性 System throughput Response time 不正确的并发控制的后果 读“脏”数据(W-R conflict) 不可重复读(R-W conflict) 丢失更新(W-W conflict)
5

读“脏”数据(W-R conflict)
1. 定义 读修改后未提交的随后又被撤消(Rollback)的数据。
T1 T2
read(A) write(A) read(A) read(B) write(B) Commit T2 read(B) write(B) Abort T1
6

第十一章简答题答案

答:数据库是共享资源,通常有许多个事务同时在运行. 当多个事务并发地存取数据库时就会产生同时读取和或修改同一数据地情况.若对并发操作不加控制就可能会存取和存储不正确地数据,破坏数据库地一致性.所以数据库管理系统必须提供并发控制机制. 个人收集整理勿做商业用途 . 并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致地情况? 答:并发操作带来地数据不一致性包括三类:丢失修改、不可重复读和读“脏”数据. ()丢失修改() 两个事务和读入同一数据并修改,提交地结果破坏了(覆盖了)提交地结果,导致地修改被丢失. 个人收集整理勿做商业用途 ()不可重复读() 不可重复读是指事务读取数据后,事务执行更新操作,使无法再现前一次读取结果. ()读“脏”数据() 读“脏”数据是指事务修改某一数据,并将其写回磁盘,事务读取同一数据后,由于某种原因被撤销,这时已修改过地数据恢复原值,读到地数据就与数据库中地数据不一致,则读到地数据就为“脏”数据,即不正确地数据. 个人收集整理勿做商业用途 避免不一致性地方法和技术就是并发控制.最常用地并发控制技术是封锁技术. 也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制. . 什么是封锁? 答:封锁就是事务在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁.加锁后事务就对该数据对象有了一定地控制,在事务释放它地锁之前,其他地事务不能更新此数据对象. 个人收集整理勿做商业用途 封锁是实现并发控制地一个非常重要地技术. . 基本地封锁类型有几种?试述它们地含义. 答:基本地封锁类型有两种: 排它锁( ,简称锁) 和共享锁( ,简称锁). 个人收集整理勿做商业用途 排它锁又称为写锁.若事务对数据对象加上锁,则只允许读取和修改,其他任何事务都不能再对加任何类型地锁,直到释放上地锁.这就保证了其他事务在释放上地锁之前不能再读取和修改. 个人收集整理勿做商业用途 共享锁又称为读锁.若事务对数据对象加上锁,则事务可以读但不能修改,其他事务只能再对加锁,而不能加锁,直到释放上地锁.这就保证了其他事务可以读,但在释放上地锁之前不能对做任何修改. 个人收集整理勿做商业用途 . 试述活锁地产生原因和解决方法. 答:活锁产生地原因:当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁. 个人收集整理勿做商业用途 避免活锁地简单方法是采用先来先服务地策略.当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁地先后次序对事务排队,数据对象上地锁一旦释放就批准申请队列中第一个事务获得锁. 个人收集整理勿做商业用途 . 请给出预防死锁地若干方法. 答:在数据库中,产生死锁地原因是两个或多个事务都已封锁了一些数据对象,然后又都请求已被其他事务封锁地数据加锁,从而出现死等待. 个人收集整理勿做商业用途防止死锁地发生其实就是要破坏产生死锁地条件.预防死锁通常有两种方法: ()一次封锁法 要求每个事务必须一次将所有要使用地数据全部加锁,否则就不能继续执行. ()顺序封锁法

安徽工业大学数据库第十一章习题解答

第十一章并发控制 1、并发操作可能会产生哪几类数据不一致性?用什么方法能避免各种不一致性得情况。 答:数据库得并发操作所带来得数据不一致性有三类:丢失更新问题、不一致性分析问题与读“脏”数据问题。对于并发操作带来得问题,通常采用并发控制得方法调度并发操作,避免造成数据得不一致性,使一个用户事务得执行不受其她事务得干扰。 2、为什么D M L锁只能提供解除S封锁得操作,而不提供解除X封锁得操作。 答:为防止由事务得ROLLBACK操作引起得丢失更新操作,X封锁必须保留到事务终点。即X封锁不就是用UNLOCK操作解除得,而就是在事务结束得语义中包含了对X封锁得解除,因此,DML不提供解除X封锁得操作。而为增加事务并发操作得程度,未到事务终点时,用户可以使用DML提供得专门解除S封锁得操作,随时解除事务得S封锁,这就是因为被S封锁得数据不可能就是未提交得修改。 3、为什么有些封锁需保留到事务终点,而有些封锁可随时解除。 答:为防止由事务得ROLLBACK操作引起得丢失更新操作,X封锁必须保留到事务终点。而被S封锁得数据不可能就是未提交得修改,因此可以随时解除事务得S封锁,达到增加事务并发操作得程度。 4、设T1、T2、T3就是如下得三个事务: T1:A:=A+2; T2:A:=A*2; T3:A:=A**2(A←A2) 设A得初值为0。 ⑴若这三个事务允许并发执行,则有多少种可能得正确结果,请一一列举出 来; ⑵请给出一个可串行化得调度,并给出执行结果; ⑶请给出一个非串行化得调度,并给出执行结果; ⑷若这三个事务都遵守两段锁协议,请给出一个不产生死锁得可串行化调 度; ⑸若这三个事务都遵守两段锁协议,请给出一个产生死锁得调度。

数据库第10、11章习题及答案 (1)

第10、11章练习题(数据库恢复技术及并发控制) 一、选择题 1.( C )是DBMS 的基本单位,它是用户定义的一组逻辑一致的程序序列。 A .程序 B .命令 C .事务 D .文件 2.事务的原子性是指( A ) 。 A .事务中包括的所有操作要么都做,要么都不做 B .事务一旦提交,对数据库的改变是永久的 C .一个事务内部的操作及使用的数据对并发的其他事务是隔离的 D .事务必须是使数据库从一个一致性状态变到另一个一致性状态 3.事务的一致性是指( D )。 A .事务中包括的所有操作要么都做,要么都不做 B .事务一旦提交,对数据为的改变是永久的 C .一个事务内部的操作及使用的数据对并发的其他事务是隔离的 D .事务必须是使数据库从一个一致性状态变到另一个一致性状态 4.事务的隔离性是指( C )。 A .事务中包括的所有操作要么都做,要么都不做 B .事务一旦提交,对数据库的改变是永久的 C .一个事务内部的操作及使用的数据对并发的其他事务是隔离的 D .事务必须是使数据库从一个一致性状态变到另一个一致性状态 5.事务的持续性是指( B )。 A .事务中包括的所有操作要么都做,要么都不做 B .事务一旦提交,对数据库的改变是永久的 C .一个事力内部的操作及使用的数据对并发的其他事务是隔离的 D .事务必须是使数据库从一个一致性状态变到另一个一致性状态 6.若数据库中只包含成功事务提交的结果,则此数据库就称为处于( B )状态。 A .安全 B .一致 C .不安全 D .不一致 7.若系统在运行过程中,由于某种原因,造成系统停止运行,致使事务在执行过程中以非控制方式终止,这时内存中的信息丢失,而存储在外存上的数据未受影响,这种情况称为( B )。 A .事务故障 B .系统故障 C .介质故障 D .运行故障 8.若系统在运行过程中,由于某种硬件故障,使存储在外存上的数据部分损失或全部损失,这种情况称为( C )。 A .事务故障 B .系统故障 C .介质故障 D .运行故障 9.( B )用来记录对数据库中数据进行的每一次更新操作。 A .后援副本 B .日志文件 C .数据库 D .缓冲区 10.用于数据库恢复的重要文件是( C )。 A .数据库文件 B .索引文件 C .日志文件 D .备注文件 11.数据库恢复的基础是利用转储的冗余数据。这些转储的冗余数据包括( C )。 A .数据字典、应用程序、审计档案、数据库后备副本 B .数据字典、应用程序、日志文件、审计档案 C .日志文件、数据库后备副本 D .数据字典、应用程序、数据库后备副本 12.设有两个事务T1、T2,其并发操作如下所示,下面评价正确的是( B )。 A .该操作不存在问题 D .该操作读“脏”数据 13.设有两个事务T1、T2,其并发操作如下所示,下面评价正确的是( C )。 A .该操作不存在问题 “脏”数据 14.设有两个事务T1 、T2,其并发操作如下所示,下列评价正确的是( D )。 A .该操作不存在问题 “脏”数据

第十一章简答题答案

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. 什么是封锁? 答:封锁就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象。 封锁是实现并发控制的一个非常重要的技术。 4. 基本的封锁类型有几种?试述它们的含义。 答:基本的封锁类型有两种: 排它锁(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做任何修改。 5. 试述活锁的产生原因和解决方法。 答:活锁产生的原因:当一系列封锁不能按照其先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁。 避免活锁的简单方法是采用先来先服务的策略。当多个事务请求封锁同一数据对象时,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中第一个事务获得锁。 6. 请给出预防死锁的若干方法。 答:在数据库中,产生死锁的原因是两个或多个事务都已封锁了一些数据对象,然后又都请求已被其他事务封锁的数据加锁,从而出现死等待。 防止死锁的发生其实就是要破坏产生死锁的条件。预防死锁通常有两种方法: (1)一次封锁法

相关主题
文本预览
相关文档 最新文档