<rp id="hg4ue"><ruby id="hg4ue"><u id="hg4ue"></u></ruby></rp>

    <button id="hg4ue"><acronym id="hg4ue"></acronym></button>
    <progress id="hg4ue"></progress>

        1. <dd id="hg4ue"></dd>

          <th id="hg4ue"><track id="hg4ue"><rt id="hg4ue"></rt></track></th>
          哈尔滨工业大学2010年考博专业课试题《数据库原理》 下载本文

          在建立检查点时,不允许事务执行任何更新操作,如写缓冲块或写日志记录。建立检查点之后,所有在检查点之前发生的更新操作都已经输出到数据库中,尚未完成的事务都登记在检查点记录中。这样,发生系统故障时,只需从最近的检查点记录开始扫描日志文件。

          对于事务故障,基于检查点的恢复过程和不使用检查点的恢复过程是相同。但对于系统故障,使用检查点技术可缩小日志的扫描范围,减少不必要的重做(REDO),提高系统故障恢复效率。当需要进行数据库恢复时,只需搜索日志文件,确定在最近创建的检查点之后开始执行或处于活动状态的事务,然后对这些事务执行重做(REDO)或撤销(UNDO)操作。

          数据库发生故障时有两种处理方法:如数据库已破坏,则由DBA装入最近备份的数据库然后利用“日志文件”执行REDO(重做)操作;如数据库未被损坏,但某些数据不可靠,则系统会自动执行撤销(UNDO)操作恢复数据。

          事务故障的恢复

          事务恢复是指事务未运行至正常终止点前被撤消,此时应对该事务做撤消处理。事务故障的恢复由系统自动完成。发生事务故障时:

          (1)执行一个中止(ABORT)并撤销(UNDO)它对数据库的任何改变,即进行下面所述的“向后恢复”数据库;

          (2)清除它对其它事务的影响,即中止(ABORT)那些读了它的“脏数据”的事务。这又可能进一步引起事务的中止(ABORT),称为串联撤消过程;

          (3)撤销(UNDO)所有被撤消的事务对数据库所作的任何改变。 系统故障的恢复

          系统故障的恢复由系统重新启动时自动完成,其恢复步骤如下:

          (1)正向扫描日志文件,找出故障发生前已经提交的事务,将其事务标识记入重(REDO)队列,同时找出故障发生时尚未完成的事务,将其事务标识记入撤消(UNDO)队列;

          (2)对撤消队列中的各个事务进行撤消(UNDO)处理; (3)对重做队列中的各事务进行重做(REDO)处理。 介质故障的恢复

          介质故障恢复的原理是利用存储在别处的冗余数据来重建数据库。所以介质故障的恢复涉及两个问题:一是如何建立冗余数据;二是如何利用冗余数据恢复数据库。最常用的技术是转储和登记日志文件。

          转储是DBA定期将整个数据库复制到磁带或另一个磁盘上保存起来。当数据库遭到破坏时,可以利用这些数据来恢复数据库,但只能恢复到转储时的状态,在这以后所运行的事务必须重新运行才能恢复到故障时的状态。

          日志文件的作用除进行事务故障的恢复和系统故障的恢复外,还用于介质故障的恢复。在动态转储中,后援副本必须和日志文件结合起来才能有效地恢复数据库。在静态转储中,若数据库被破坏,必须先利用后备副本文件装入到上一次转储结束前的正确状态,然后再利用日志文件把已经完成的事务重新处理,使数据库恢复到故障前的某一时刻的正确状态。

          介质故障的恢复方法是重装后备数据库,然后重做已完成的事务,具体步骤如下:

          (1)装入最近的数据库后备副本,即故障前最后一次转储的数据库副本,使数据库恢复到最后转储

          - 6 -

          时的一致性状态。

          (2)打开永恒存储器中的日志文件,正向扫描日志文件,找出故障发生时已经提交的事务的标识,将其记入重做队列,然后对重做队列中的所有事务进行重做。

          这样便可把数据库恢复到故障前的某一时刻的一致性状态。不过按照这种方法进行恢复存在着严重的弊端:一方面需要搜索整个日志文件,耗费大量的时间;另一方面需要重做大量已经成功地将其更新操作结果写入数据库的事务,浪费极大。

          数据库镜像

          为了避免磁盘介质故障影响数据库的可用性,许多数据库管理系统提供了数据库镜像功能,用于数据库的恢复。即根据DBA的要求,DBMS自动把整个数据库或其中关键数据复制到另一个磁盘上,每当主数据库更新时,DBMS自动把更新后的数据复制到镜像磁盘上。一旦发生介质故障,系统自动切换到镜像磁盘上,避免了因介质故障而关闭系统。用户应用不用中断,也无须重装数据库后备副本,更不用重做转储后已经做过的操作。另一方面,在没有出现故障的时候,数据库镜像还可以用于并发操作,即某一数据对象被加X锁时,其它用户要访问该数据对象不用等待,可从数据库镜像上读取。

          四、简述一级、二级、三级封锁协议,并分析每一级封锁协议解决了哪些数据不一致性问题,还存在哪些数据不一致问题(10分)

          (P277 范明《数据库原理教程》,P166 尹为民《数据库技术及应用》)

          事务的并发执行可能带来的数据不一致性:(1)丢失修改;(2)不可重复读;(3)读“脏”数据 并发控制:用正确的方式调度并发操作,使一个用户事务的执行不受其它事务的干扰,从而避免造成数据的不一致性。避免数据不一致性的方法和技术主要是并发控制,如封锁(Locking)技术、基于时间戳的并发控制技术等。

          封锁是事务T在对某个数据对象进行操作之前,先向系统发出加锁请求,加锁后事务T就对该数据对象有了一定的控制权,在事务T释放它的锁之前,其他事务不能更新该数据对象;镜乃辛街郑汗蚕硭⊿锁)和排他锁(X锁)。

          排他锁(X锁):又称写锁,若事务T获得了数据对象Q上的排他锁,则事务T既可以读又可以写(修改)数据对象Q,但在事务T释放Q上的X锁之前,其他事务既不能获得Q上的S锁,也不能获得Q上的X锁。

          共享锁(S锁):又称读锁,若事务T获得了数据对象Q上的共享锁,则事务T可以读但不能写Q,并且在事务T释放Q上的S锁之前,其他事务只能获得Q上的S锁,而不能获得Q上的X锁。

          在事务T在数据对象Q上的排他锁保证了在事务T释放数据对象Q上的锁之前,其他事务既不能读取,也不能修改数据对象Q,即排他锁;な荻韵蟛槐煌倍粱蛐;事务T在数据对象Q上的共享锁(S锁)保证了其他事务可以读数据对象Q,但在事务T释放Q上的S锁之前不能对数据对象Q做任何修改,即共享锁;な荻韵蟛槐恍,但可以同时读。

          三级封锁协议:在运用封锁技术对数据对象进行加锁时,对封锁方式约定的一些规则称为封锁协议。对封锁方式约定不同的规则,就形成了各种不同的封锁协议(Locking Protocol),其总共分为以下三级:

          (1)一级封锁协议:事务T在修改数据项Q之前必须对其加排他锁(X锁),直至该事务结束才释放。事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK)。

          - 7 -

          作用:一级封锁协议可以防止丢失修改,保证事务T是可恢复的。但由于在一级锁协议中,如果仅仅是读数据而不对其进行修改,是不需要加锁的,所以它不能保证可重复读和不读“脏”数据。

          (2)二级封锁协议:事务T在要读取数据项Q之前必须对其加S锁,读完后即可释放加在数据项Q上的S锁。此种封锁方式与一级封锁协议(事务T对要修改数据项Q必须先对其加X锁,直到事务结束才释放数据项Q上的X锁)共同构成了二级封锁协议。

          作用:二级锁协议可防止丢失修改及读“脏”数据;但在二级封锁协议中,由于读完数据后立即释放S锁,所以不能保证可重复读。

          (3)三级封锁协议:事务T在读取数据项Q之前必须先对其加S锁,在要修改数据项Q之前必须先对其加X锁,直到事务结束后才释放加在数据项Q上的所有锁。此种封锁方式与一级封锁协议联合构成了三级封锁协议。

          作用:在三级锁协议中,无论是读数据还是写数据都要等到事务结束才释放封锁,所以三级封锁协议不仅可防止丢失修改,而且可防止读“脏”数据以及防止不可重复读。

          上述三个级别的封锁协议的主要区别在于什么操作需要申请加锁,以及何时释放锁(即持锁时间),以防止不同的并发错误。三个级别的封锁协议可以总结为下表

          协 议 一级封锁协议 二级封锁协议 三级封锁协议 类 别 X锁 操作结事务结S锁 操作结事务结不丢失修改 √ √ √ 一致性保证 不读脏数据 √ √ 可重复读 √ 束释放 束释放 束释放 束释放 √ √ √ √ √ 表 不同级别的封锁协议

          五、当用户输入一条SQL查询语句时,请叙述DBMS所进行的优化实现过程及思想(15分)

          六、请依据下面叙述的范围进行数据库设计,给出 (1)E-R图或IDEFIX图及其简要说明。 (2)完整的关系模式

          (3)设计所蕴涵的函数依赖关系,分别满足第几范式并说明理由(20分,第1小题 10分,后两小题各5分)

          高?蒲惺Ч芾硐低常耗逞S腥舾筛鱿,每个系有多名教师和学生。每个教师可以参加多项科研工作,并同时开设多门课程,反之,每一科研项目需要多名教师参加,每门课程也可由多名教师任教。每个学生可以同时选修多门课程。

          - 8 -

          七、已知关系模式:已知某公司数据库中包含四张基本表:

          ①部分情况基本表DEPT (D#,Dname,Location),其中D#为部门编号,Dname为部门名称,Location为部分所在地;

          ②员工情况基本表EMP(E#,Ename,Esex,Eage,D#),其中E#为员工编号,Ename为员工姓名,D#为员工所在的部分编号;

          ③项目情况基本表PROJ(P#,Pname,Budget),其中P#为项目编号,Pname为项目名称,Budget为项目预算;

          ④参加各项目的员工情况基本表WORK(E#,P#,Job),其中E#为员工编号,P#为项目编号,Job为员工参与项目的工作性质(如系统分析员,经理,编程人员等)。

          请写出满足下列查询要求的关系代数式和SQL语句。(15分,每小题5分) (1)查询参加了“Danny”所参加全部项目的员工姓名;

          (2)没有参加员工“Danny”所参加项目中任何一项的所有员工的姓名;

          (3)查询有10人以上(含10人)参加的项目,要求输出项目编号,对应项目所参与员工的人数,并按参加员工人数由高到低排列。

          - 9 -

          福利:打开支付宝首页搜索“608066754”即可领取红包,吃个早点,买杯饮料肯定够了,红包加倍最高可以领取99元红包!

          「觉得内容不错,打赏支持一下」

          南京廖华

          觉得内容不错,打赏支持一下

          使用微信扫描二维码完成支付

          福利:打开支付宝扫描二维码领红包,可免费下载资料 微信:17702577729




          买马开奖结果资料-买马开奖网站-买平特一肖能赚钱吗