文档库 最新最全的文档下载
当前位置:文档库 › 数据库原理及应用总复习

数据库原理及应用总复习

数据库并发

一、单选题

1. 下面()不是数据库系统必须提供的数据控制功能。

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

答案:B

2.保护数据库,防止未经授权的或不合法的使用造成的数据泄漏、更改破坏。这是指数据的()。

A.安全性B.完整性C.并发控制D.恢复

答案:A

3.数据库的()是指数据的正确性和相容性。

A.安全性B.完整性C.并发控制D.恢复

答案:B

4.在数据系统中,对存取权限的定义称为()。

A.命令B.授权C.定义D.审计

答案:B

5.数据库管理系统通常提供授权功能来控制不同用户访问数据的权限,这主要是为了实现数据库的()。

A.可靠性B.一致性C.完整性D.安全性

答案:D

6.授权编译系统和合法性检查机制一起组成了()子系统。

A.安全性B.完整性C.并发控制D.恢复

答案:A

7. ()是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位

A.程序B.命令 C.事务D.文件

答案:C

8. 事务的原子性是指()。

A.事务中包括的所有操作要么都做,要么都不做

B.事务一旦提交,对数据库的改变是永久的

C.一个事务内部的操作及使用的数据对并发的其他事务是隔离的

D.事务必须是使数据库从一个一致性状态变到另一个一致性状态

答案:A

9. 事务的持续性是指()。

A.事务中包括的所有操作要么都做,要么都不做

B.事务一旦提交,对数据库的改变是永久的

C.一个事务内部的操作及使用的数据对并发的其他事务是隔离的

D.事务必须是使数据库从一个一致性状态变到另一个一致性状态

答案:B

10. 事务是数据库操作的基本工作单位。如果一个事务执行成功,则全部更新提交;如果一个事务执行失败,则已做过的更新被恢复原状,好像整个事务从未有过这些更新,这样保持了数据库处于()状态。

A.安全性B.一致性C.完整性D.可靠性

答案:B

11. 多用户的数据库系统的目标之一是使它的每个用户好像面对着一个单用户的数据库一样使用它,为此,数据库系统必须进行()。

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

答案:C

12. 对并发操作若不加以控制,可能会带来()问题。

A.不安全B.死锁 C.死机D.数据不一致

答案:D

13. 并发操作会带来的数据不一致性有()。

A.丢失修改、不可重复读、读脏数据、死锁

B.不可重复读、读脏数据、死锁

C.丢失修改、读脏数据、死锁

D.丢失修改、不可重复读、读脏数据

答案:D

14. 有两个事务T1 、T2 ,其并发操作如图所示,下面评价正确的是()。 A.该操作不存在问题 B.该操作丢失修改

C.该操作不能重复读 D.该操作读“脏”数据

答案:B

T1 T2

①读A=10

③A=A-5写回④读A=10

A=A-8写回

15.设有两个事务T1、T2,其并发操作如下所示,下面评价正确的是()。

A.该操作不存在问题B.该操作丢失修改

C.该操作不能重复读D.该操作读“脏”数据

答案:C

T1 T2

①读A=10,B=5

③读A=20,B=5

求和25验证错读A=10

A=A*2写回

16.设有两个事务T1、T2,其并发操作如下所示,下列评价正确的是()。

A.该操作不存在问题B.该操作丢失修改

C.该操作不能重复读D.该操作读“脏”数据

答案:D

T1 T2

①读A=100

A=A*2写回

③ROLLBACK

恢复A=100

读A=200

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

A.封锁B.恢复 C.存取控制D.协商

答案:A

18.若事务T对数据R已经加X锁,则其他事务对数据R ()。

A.可以加S锁不能加X锁B.不能加S锁可以加X锁

C.可以加S锁也可以加X锁D.不能加任何锁

答案:D

19.不允许任何其他事务对这个锁定目标再加任何类型的锁是()。

A.共享锁B.排它锁C.共享锁或排它锁D.以上都不是

答案:B

20.数据库中的封锁机制是()的主要方法。

A.完整性B.安全性C.并发控制D.恢复

答案:C

21.关于“死锁”,下列说法中正确的是()。

A.死锁是操作系统中的问题,数据库操作中不存在

B.在数据库操作中防止死锁的方法是禁止两个用户同时操作数据库

C.当两个用户竞争相同资源时不会发生死锁

D.只有出现并发操作时,才有可能出现死锁

答案:D

22.若数据库中只包含成功事务提交的结果,则此数据库就称为处于()状态。

A.安全B、.一致C.不安全D.不一致

答案:B

23.若系统在运行过程中,由于某种原因,造成系统停止运行,致使事务在执行过程中以非控制方式终止,这时内存中的信息丢失,而存储在外存上的数据未受影响,这种情况称为()。

A.事务故障B.系统故障C.介质故障D.运行故障

答案:B

24.若系统在运行过程中,由于某种硬件故障,使存储在外存上的数据部分损失或全部损失,这种情况称为()。

A.事务故障B.系统故障C.介质故障D.运行故障

答案:C

25.操作系统故障属于()。

A.人为错误B.事务故障C.介质故障D.系统故障

答案:D

26.()用来记录对数据库中数据进行的每一次更新操作。

A.后援副本B.日志文件C.数据库D.缓冲区

答案:B

27.后援副本的用途是()。

A.安全性保障B.一致性控制C.故障后的恢复D.数据的转储

答案:C

28.用于数据库恢复的重要文件是()。

A.数据库文件B.索引文件C.日志文件D.备注文件

答案:C

29.日志文件是用于记录()。

A.程序运行过程B.数据操作

C.对数据的所有更新操作D.程序执行的结果

答案:C

30.数据库恢复的基础是利用转储的冗余数据。这些转储的冗余数据包括()。

A.数据字典、应用程序、审计档案、数据库后备副本

B.数据字典、应用程序、日志文件、审计档案

C.日志文件、数据库后备副本

D.数据字典、应用程序、数据库后备副本

答案:C

31.()是指在转储过程中,不允许其他事务对数据库进行存取或修改操作,并且每次只转储上一次转储后更新过的数据。

A.动态海量转储B.动态增量转储

C.静态海量转储D.静态增量转储

答案:D

32.以下()封锁违反两段锁协议。

A.Slock A…Slock B…Xlock C…………...Unlock A…Unlock B…Unlock C B.Slock A…Slock B…Xlock C……………Unlock C…Unlock B…Unlock A C.Slock A…Slock B…Xlock C……………Unlock B…Unlock C…Unlock A D.Slock A…Unlock A……. Slock B…Xlock C……………Unlock B…Unlock C 答案:D

二、多选题

1.事务的特性有()。

A.原子性B.一致性 C.隔离性D.持续性

答案:ABCD

2.并发操作可能会带来的数据不一致性有( )。

A.丢失修改 B.不可重复读C.读脏数据D.死锁

答案:ABC

3.关于“死锁”,下列说法中错误的是()。

A.死锁是操作系统中的问题,数据库操作中不存在

B.在数据库操作中防止死锁的方法是禁止两个用户同时操作数据库

C.当两个用户竞争相同资源时不会发生死锁

D.并发控制的目的就是消除死锁

答案:ABCD

4.封锁机制是并发控制的主要手段,( )封锁协议不但能够防止丢失修改,还可进一步防止读“脏”数据。

A.一级B.二级 C.三级D.都可以

答案:BC

5.若事务T对数据R已加X锁,则其他事务对数据R()。

A.可以加S锁B.不能加S锁C.可以加X锁 D.不能加任何锁答案:BD

6.在SQL Server中,有关页的叙述中正确的是()。

A.页是除行外的最小数据单位

B.一个页有8KB

C.表中的行不能跨页存放,一行的数据必须在同一个页上

D.8个连续的页称为1个簇

答案:ABCD

7.数据库恢复通常采用的方法是()。

A.建立检查点B.建立副本C.建立日志文件D.建立索引

答案:ABC

8.数据库系统中可能发生的故障()。

A.运行故障B.事务故障C.系统故障D.介质故障

答案:BCD

9.系统故障是指造成系统停止运转,必须重新启动系统的任何事件,它包括以下()几种情况。

A.计算机病毒B.操作系统故障

C.DBMS代码错误D.数据库服务器出错

答案:BCD

三、填空题

1. 事务通常是以①开始,以②表示正常结束,以③结束表示对数据库的所有已完成的操作全部撤消,回滚到事务开始时的状态。

答案:①BEGIN TRANSACTION ②COMMIT ③ROLLBACK

2. 如果数据库中只包含成功事务提交的结果,就说数据库处于一致性状态。

答案:一致性

3. 数据库中解决活锁问题的方法是①。解决死锁问题主要有两类方法:一类方法是②;另一类方法是③。

答案:①先来先服务②预防死锁③允许发生死锁,然后解除之

4. 封锁机制是并发控制的主要手段。封锁机制中有两种基本类型的锁,他们是排它锁和。

答案:共享锁

5. 封锁具有3个环节:第一个环节是申请加锁;第二个环节是①;第三个环节是②。

答案:①获得锁②释放锁

6. 若事务T对数据对象A加了S锁,则其他事务只能对数据A再加①,不能再加②,直到事务T释放A上的锁。

答案:①S锁② X锁

7. 并发操作可能带来的数据不一致性,最根本的原因是违背了隔离性。答案:事务的隔离性

8. “事务T在读取数据之前必须先对其加S锁,在要修改数据之前必须先对其加X锁,直到事务结束后才释放所有锁。”这是级封锁协议。

答案:三

9. 封锁粒度是指封锁对象的大小。封锁粒度与系统的并发度和并发控制的开销密切相关。封锁的粒度越小,并发度越①,系统开销也越②;封锁的粒度越大,并发度越③,系统开销也越④。

答案:①高②大③低④小

10. SQL Server遵从级封锁协议,从而有效地控制并发操作可能产生的丢失更新、读“脏”数据、不可重复读等错误。

答案:三

11.数据恢复最常用的技术是建立数据转储和利用。

答案:日志文件

12.为保证数据库的可恢复性,登记日志文件时必须遵循两条原则:一是登记的次序严格按事务执行的时间次序;二是。

答案:先写日志文件,后写数据库

13.事务故障的解决办法是恢复程序在不影响其他事务运行的情况下。答案:撤销该事务

14.日志文件是用来记录对数据库的更新操作的文件。不同的数据库系统采用的日志文件格式不完全相同。日志文件主要有以记录为单位的日志文件和。

答案:以数据块为单位的日志文件

15.会破坏磁盘上的物理数据库和日志文件,这是最严重的一种故障。恢复方法是重装数据库后备副本,然后重做已完成的事务。

答案:介质故障

17.语句可以完成对整个数据库的恢复,也可以恢复数据库的日志,或者是指定恢复数据库的某个文件或文件组。

答案:RESTORE

18.数据库保护包含数据的。

答案:安全性、完整性、并发控制、恢复

20.保护数据安全性的一般方法是。

答案:设置用户标识和存取权限控制

21.数据的安全性是指。

答案:保护数据库,防止未经授权的,或不合法的使用造成的数据泄漏、更改或破坏22.安全性控制的一般方法有①、②、③、④和视图的保护五级安全措施。

答案:①用户标识鉴定②存取控制③审计④数据加密

23.存取权限包括两方面的内容,一个是①,另一个是②。

答案:①要存取的数据对象②对此数据对象进行操作的类型

24.①和②一起组成了安全性系统。

答案:①授权编译系统②合法权检查机制

25.是DBMS的基本单位,它是用户定义的一组逻辑一致的操作序列。

答案:事务

26.DBMS的基本工作单位是事务,它是用户定义的一组逻辑一致的操作序列;并发控制的主要方法是机制。

答案:封锁

27.有两种基本类型的锁,它们是①和②。

答案:①共享锁②排它锁

28.对并发操作若不加以控制,可能带来的不一致性有①、②

和③。

答案:①丢失修改②不能重复读③读“脏”数据

29.并发控制是对用户的加以控制和协调。

答案:并发操作

30.并发控制的主要方法是采用①机制,其类型有②和③两种。

答案:①封锁②排它锁(或X锁)③共享锁(或S锁)

31.若事务T对数据对象A加了S锁,则其他事务只能对数据A再加①,不能加②,直到事务T释放A上的锁。

答案:①S锁②X锁

32.若事务在运行过程中,由于种种原因,使事务未运行到正常终止点之间就被撤消,这种情况就称为。

答案:事务故障

33.数据库恢复是将数据库从①状态恢复到②的功能。

答案:①错误②某一已知的正确状态

34.系统在运行过程中,由于某种原因,造成系统停止运行,致使事务在执行过程中以非控制方式终止,这时内存中的信息丢失,而存储在外存上的数据不受影响,这种情况称为。

答案:系统故障

35.系统在运行运程中,由于某种硬件故障,使存储在外存上的数据部分损失或全部损失,这种情况称为。

答案:介质故障

36.数据库系统在运行过程中,可能会发生故障。故障主要有①、②、介质故障和③四类。

答案:①事务故障②系统故障③计算机病毒

37.数据库系统在运行过程中,可能会发生各种故障,其故障对数据库的影响总结起来有两类:①和②。

答案:①数据库本身被破坏②数据库处于不一致状

38.数据库系统是利用存储在外存上其他地方的①来重建被破坏的数据库。它主要有两种:②和③。

答案:①冗余数据②后援副本③日志文件

39.制作后援副本的过程称为①。它又分为②和③。

答案:①转储②增量转储③日志文件

40.事务故障、系统故障的恢复是由①完成的,介质故障是由②完成的。

答案:①系统自动②DBA执行恢复操作过程

41.数据库中数据的完整性包括①、②和③。

答案:①实体完整性②参照完整性③用户自定义的完整性

42.实体完整性是指在基本表中,。

答案:主属性不能取空值

43.参照完整性是指在基本表中,。

答案:外码可以是空值或者另一个关系主码的有效值

44.为了保护数据库的实体完整性,当用户程序对主码进行更新使主码值不惟一时,DBMS 就。

答案:拒绝此操作

45.在数据库系统中对存取权限的定义称为。

答案:授权

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

答案:①GRANT ②REVOKE

四、简答题

1.试述事务的概念及事务的4 个特性。

答:事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。

事务具有4 个特性:原子性(Atomicity )、一致性(consistency )、隔离性( Isolation )和持续性(Durability )。这4 个特性也简称为ACID 特性。

原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。

一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。

隔离性:一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。持续性:持续性也称永久性(Perfnanence ) ,指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。

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

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

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

答:并发操作带来的数据不一致性包括三类:丢失修改(lost update )、不可重复读(Non 一Repeatable Read )和读“脏’数据(Dirty Read )。

( l )丢失修改是指两个事务Tl 和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了)Tl 提交的结果,导致Tl 的修改被丢失。

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

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

产生上述三类数据不一致性的主要原因是并发操作破坏了事务的隔离性。并发控制就是要用

正确的方式调度并发操作,使一个用户事务的执行不受其它事务的干扰,从而避免造成数据的不一致性。并发控制的主要技术是封锁(Llcking)。也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。

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

答:封锁就是事务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 做任何修改。

5. 什么是活锁?什么是死锁?

答:

如果事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待。然后T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求,……,T2有可能永远等待,这就是活锁的情形。活锁的含义是该等待事务等待时间太长,似乎被锁住了,实际上可能被激活。

如果事务T1封锁了数据R1,T2封锁了数据R2,然后T1又请求封锁R2,T2已封锁了R2,于是等待T2释放R2上的锁。接着T2又申请封锁R1,因T1已封锁R1,T2也只能等待T1释放R1上的锁。这样就出现了T1在等待T2,而T2又在等待T1的局面,T1和T2两个事务永远不能结束,形成死锁。

6 .如何预防死锁?

答:在数据库中,产生死锁的原因是两个或多个事务都已封锁了一些数据对象,然后又都请求对已被其他事务封锁的数据对象加锁,从而出项死等待。防止死锁的发生其实就是要破坏产生死锁的条件。预防死锁通常有两种方法:

(1)一次封锁法

一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。一次封锁法虽然可以有效地防止死锁的发生,但也存在问题,一次就将以后要用到的全部数据加锁,势必扩大了封锁的范围,从而降低了系统的并发度。

(2)顺序封锁法

顺序封锁法是预先对数据对象规定一个封锁顺序,所以事务都按这个顺序实行封锁。顺序封锁法可以有效地防止死锁,但也同时存在问题。事务的封锁请求可以随着事务的执行而动态地决定,很难事先确定每一个事务要封锁哪些对象,因此也就很难按规定的顺序去施加封锁。

可见,在操作系统中广为采用的预防死锁的策略并不很适合数据库的特点,因此DBMS 在解决死锁的问题上普遍采用的是诊断并解除死锁的方法。

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

答:DBMS 中诊断死锁的方法与操作系统类似,一般使用超时法或事务等待图法。超时法是:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。超时法实现简单,但有可能误判死锁,事务因其他原因长时间等待超过时限时,系统会误认为发生了死锁。若时限设置得太长,又不能及时发现死锁发生。DBMS 并发控制子系统检测到死锁后,就要设法解除。通常采用的方法是选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有锁,使其他事务得以继续运行下去。当然,对撤销的事务所执行的数据修改操作必须加以恢复。

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

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

8. Tl ,T2,T3是如下的3 个事务:

Tl :A : = A + 2 ;

T2:A : = A * 2 ;

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

设 A 的初值为0 。

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

答:A 的最终结果可能有2 、4 、8 、16 。因为串行执行次序有Tl T2T3、Tl T3T2、T2T1T3、T2T3Tl 、T3T1T2、T3T2 Tl 。对应的执行结果是16 、8 、4 、2 、4 、2 。

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

答:

最后结果A 为16 ,是可串行化的调度。

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

答:

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

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

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

答:

9.数据库中为什么要有恢复子系统?它的功能是什么?

答:因为计算机系统中硬件的故障、软件的错误、操作员的失误以及恶意的破坏是不可避免的,这些故障轻则造成运行事务非正常中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中全部或部分数据丢失,因此必须要有恢复子系统。

恢复子系统的功能是:把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态)。

10.数据库运行中可能产生的故障有哪几类?哪些故障影响事务的正常执行?哪些故障破坏数据库数据?

答:数据库系统中可能发生各种各样的故障,大致可以分以下几类:

(1)事务内部的故障

(2)系统故障

(3)介质故障

(4)计算机病毒

事务故障、系统故障和介质故障影响事务的正常执行;

介质故障和计算机病毒破坏数据库数据。

11.数据库恢复的基本技术有哪些?

答:数据转储和登录日志文件是数据库恢复的基本技术。

所谓转储即DBA定期地整个数据库复制到磁带或另一个磁盘上保存起来的过程。这些备用的数据文本称为后备副本或后援副本。

日志文件是用来记录事务对数据库的更新操作的文件。不同数据库系统采用的日志文件格式并不完全一样。概括起来日志文件主要有两种格式:以记录为单位的日志文件和以数据块为单位的日志文件。

当系统运行过程中发生故障,利用转储的数据库后备副本和日志文件就可以将数据库恢复到故障前的某个一致性状态。

12.什么是日志文件?为什么要设立日志文件?

答:

(1)日志文件是用来记录事务对数据库的更新操作的文件。

(2)设立日志文件的目的是:进行事务故障恢复;进行系统故障恢复;协助后备副本进行介质故障恢复。

13.登记日志文件时为什么必须先写日志文件,后写数据库?

答:

把对数据的修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只完成了一个。

如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,在恢复时只不过是多执行一次UNDO 操作,并不会影响数据库的正确性。所以一定要先写日志文件,即首先把日志记录写到日志文件中,然后写数据库的修改。

相关文档
相关文档 最新文档