数据库系统原理参考答案(8)

2019-03-27 19:34

第八章 习题参考答案

1.解释查询优化,简述查询优化的基本规则。

查询优化是指对SQL查询过程进行分析,最大限度的提高SQL的查询速度。查询优化分为代数优化和物理优化两个方面。

下面的优化策略一般能提高查询效率: ( l )选择运算应尽可能先做; ( 2 )把投影运算和选择运算同时进行; ( 3 )把投影同其前或其后的双目运算结合起来执行; ( 4 )把某些选择同在它前面要执行的笛卡儿积结合起来成为一个连接运算; ( 5 )找出公共子表达式; ( 6 )选取合适的连接算法。

2.简述查询优化的一般步骤。

各个关系系统的优化方法不尽相同,大致的步骤可以归纳如下: ( l )把查询转换成某种内部表示,通常用的内部表示是语法树。 ( 2 )把语法树转换成标准(优化)形式。即利用优化算法,把原始的语法树转换成优化的形式。 ( 3 )选择低层的存取路径。 ( 4 )生成查询计划,选择代价最小的。

3.对学生数据库有如下的查询:

查询数学系学生选修的所有课程名称: SELECT CName

FROM Student S, Course C, StudentCourse SC

WHERE S.SNo=SC.SNo AND SC.CNo=C.CNo AND S.SDept='数学系'

试画出用关系代数表示的语法树,并使用关系代数表达式优化算法对原始的语法树进行优化处理,画出优化后的优化语法树;最后写出优化后的关系代数表达式。

4.查询选修了数据库技术的学生姓名。给出SQL Server查询语句和关系代数表达式,并给出初始语法树和优化语法树;最后写出优化后的关系代数表达式。

参考第三题

2

第九章 习题参考答案

1.解释事务?简述事务的四个特性。

事务(Transaction)是DBS的一个操作单元,它包含了用户定义的一个基本操作序列,这个基本操作序列可以包含一个或者多个数据库的基本操作。事务所包含的基本操作要么都做,要么都不做,它们构成了一个不可分割的工作单元。

事务具有四个基本特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),简称为 ACID特性。

(1)原子性:事务必须是原子工作单元;对于其过程所涉及的数据修改,要么是全都被执行,要么全都不被执行。

(2)一致性:事务在完成时,必须使所有的数据都保持一致。在相关DB中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有内部数据结构都必须是正确的。事务将DB从一个一致性状态转变为另外一个一致性状态,但在事务内无须保证一致。

(3)隔离性:由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时,数据所处的状态要么是另一并发事务修改之前的状态,要么是另一事务修改之后的状态,事务不会查看中间状态的数据,即事务的可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。

(4)持久性:事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持,其对数据库的更新也将永久有效。

2.简述DBS的故障种类。解释事务故障、系统故障和介质故障的恢复策略。

根据故障发生的环境和原因,DBS发生的故障大致分为:事务故障、系统故障、介质故障、计算机病毒。

事务故障可以分为两类,一类是事务内部的数据逻辑性错误,这类错误是可预见并通过事务的逻辑流程消除。另外一类是其他问题导致的事务内部故障,这类故障事务内部更多的是非预期的(例如:运算死锁、运算溢出等),这种非预期故障不能由应用程序处理。

系统故障是造成DBS停止运转的任何事件,这些事件使得系统需要重新启动。例如,特定的硬件错误(CPU故障)、操作系统故障、DBMS代码错误、突然停电等。

系统故障常称为软故障,介质故障称为硬故障。硬故障指外存故障,即磁盘损坏、磁头碰撞,瞬时强磁场干扰等情况导致的存储介质故障。这类故障将破坏部分乃至整个DB,并影响正在存取这部分数据的所有事务。

3.简述恢复机制的核心技术以及建立冗余数据的常用技术。

恢复技术的核心技术就是冗余,也就是对DB利用某种方式进行备份。

数据转储就是定期地将DB复制到另一些存储介质上保存起来的过程(亦称DB备份)。这些备用的数据文件称为后备副本或者后援副本。当DB遭到破坏后可以将后备副本重新装入,

但是重装后备副本只能将DB恢复到转储时的状态,要想恢复到故障发生时的状态,必须重新运行自转储以后的所有更新事务。

日志文件是用来记录事务对DB进行更新操作的文件。日志记录了所有更新操作的具体细节,尤其是被更新对象的前后映像。因此,如果有必要撤消某个更新,系统可利用相应的日志记录恢复被更新对象的原值。

4.什么是数据转储?简述数据转储的常用方法。给出一个数据转储的可行策略。

数据转储就是定期地将DB复制到另一些存储介质上保存起来的过程(亦称DB备份)。这些备用的数据文件称为后备副本或者后援副本。

静态转储:在系统中无运行事务时进行的转储操作,如上图所示。静态转储简单,但必须等待正运行的用户事务结束才能进行。同样,新的事务必须等待转储结束才能执行。显然,这会降低数据库的可用性。

动态转储:指转储期间允许对数据库进行存取或修改。动态转储可克服静态转储的缺点,它不用等待正在运行的用户事务结束,也不会影响新事务的运行。但是,转储结束时后援副本上的数据并不能保证正确有效。因为转储期间运行的事务可能修改了某些数据,使得后援副本上的数据不是数据库的一致版本。为此,必须把转储期间各事务对数据库的修改活动登记下来,建立日志文件( 109 file )。这样,后援副本加上日志文件就能得到数据库某一时刻的正确状态。转储还可以分为海量转储和增量转储两种方式。 海量转储是指每次转储全部数据库。

增量转储则指每次只转储上一次转储后更新过的数据。从恢复角度看,使用海量转储得到的后备副本进行恢复一般说来更简单些。但如果数据库很大,事务处理又十分频繁,则增量转储方式更实用更有效。

5.什么是日志文件?简述常用的日志文件及其具体内容。

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

针对日志文件的格式,不同DBS采用的文件格式并不完全一样。不过,对于不同的产品,日志文件的主要格式是以记录为单位的日志文件和以数据块为单位的日志文件。 (1)日志文件的内容和格式

对于以记录为单位的日志文件,日志文件中需要登记的内容包括: ◇ 各个事务的开始(BEGIN TRANSACTION)标记 ◇ 各个事务的结束(COMMIT或ROLL BACK)标记 ◇ 各个事务的所有更新操作

这里每个事务的开始标记、结束标记和每个更新操作均作为日志文件中的一个日志记录。 每个日志记录的内容主要包括: ◇ 事务标识(标明是那个事务) ◇ 操作的类型(插入、删除或修改) ◇ 操作对象(记录内部标识)

◇ 更新前数据的旧值(对插入操作而言,此项为空值)

2

◇ 更新后数据的新值(对删除操作而言, 此项为空值)

对于以数据块为单位的日志文件,日志记录的内容包括事务标识和被更新的数据块。由于将更新前的整个块和更新后的整个块都放入日志文件中,操作的类型和操作的对象等信息就不必放入日志文件中。

6.简述日志文件的登记规则中必须先写日志文件,后写数据库的原因。

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

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

7.什么是并发控制?简述并发控制与数据共享的关系。

并发控制是指对事务的并发执行进行调度,避免事务之间因为对共享数据的争夺造成数据的不一致性。

从事务并发过程来看,不同事务对共同数据进行读写是产生问题的关键,因为不同的事务都对共同数据进行读写可能导致一个事务对另外一个事务的中间结果进行读写,因而可能破坏事务的ACID特性。为了解决并发事务可能带来的问题,需要对事务进行合理的控制。

8.简述并发事务主要导致的数据不一致。如何解决?

并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏’夕数据。 ( l ) 丢失修改(lost update ) 两个事务 Tl 和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了) Tl 提交的结果,导致 Tl 的修改被丢失。

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

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

避免不一致性的方法和技术就是并发控制,最常用的技术是封锁技术。也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。

9.解释封锁?简述常用的封锁。

封锁就是事务 T 在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务 T 就对该数据对象有了一定的控制,在事务 T 释放它的锁之前,其他的事务不能更新此数据对象。封锁是实现并发控制的一个非常重要的技术。

基本的封锁类型有两种:排它锁( Exclusive Locks ,简称 x 锁)和共享锁 ( Share Locks,简称 S 锁)。排它锁又称为写锁。若事务 T 对数据对象 A 加上 X 锁,则只允许 T 读取和

3


数据库系统原理参考答案(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:新课程高中政治知识结构全图

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: