- 1、本文档共61页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二级封锁协议 一级封锁协议加上对事务T对要读取的数据加S锁,读完后即释放S锁。 除了可以防止丢失修改外,还可以防止读“脏”数据。 但不能保证可重复读数据。 二级封锁协议示例 没有读脏数据 三级封锁协议 一级封锁协议加上事务T对要读取的数据加S锁,并直到事务结束才释放。 除了可以防止丢失修改和不读“脏”数据之外,还进一步防止了不可重复读。 三级封锁协议示例 可重复读 不同级别的封锁协议总结 7.2.4 死锁 两个事务相互等待对方先释放资源,则会造成死锁。 预防死锁的方法 一次封锁法:每个事务一次将所使用数据全部加锁。 存在的问题 降低系统并发度 难于事先精确确定封锁对象 顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务都按这个顺序封锁。 存在的问题 维护成本:数据库系统中封锁的数据对象极多,并且在不断地变化。 难以实现:很难事先确定每一个事务要封锁哪些对象。 7.2.5 并发调度的可串行性 多个事务的并发执行是正确的,当且仅当其结果与按某一顺序的串行执行的结果相同,则我们称这种调度为可串行化的调度。 可串行性是并发事务正确性的准则,按这个准则,一个给定的并发调度,当且仅当它是可串行化的时,才认为是正确的调度。 可串行化调度 例:设有两个事务,分别包含下列操作: 事务T1:读B;A=B+1;写回A 事务T2:读A;B=A+1;写回B 设A、B的初值均为4, 给出对这两个事务不同的调度策略。 策略1:串行调度 策略2:并行调度 不可串行化 可串行化 7.2.6 两段锁协议 两段锁协议是实现可串行化调度的充分条件。 可以将每个事务分成两个时期:申请封锁期和释放封锁期,申请期申请要进行的封锁,释放期释放所占有的封锁。 在申请期不允许释放任何锁,在释放期不允许申请任何锁,这就是两段式封锁。 一些结论 事务遵守两段锁协议是可串行化调度的充分条件,而不是必要条件。 若并发事务都遵守两段锁协议,则对这些事务的任何并发调度策略都是可串行化的。 若并发事务的一个调度是可串行化的,不一定所有事务都符合两段锁协议。 调度示例 遵守两段锁协议 不遵守两段锁协议 7.3 数据库备份与恢复 7.3.1 数据库故障的种类 7.3.2 数据库备份 7.3.3 数据库恢复 7.3.1 数据库故障的种类 事务内部的故障 系统故障 其他故障 1. 事务内部的故障 有的是可以通过事务程序本身发现的(如转帐中的帐户余额不能小于0,若发现小于0,则可显式的回滚事务)。 有的是不能由应用程序发现的(称为非预期的故障),如: 运算溢出 并发事务发生死锁而被选中撤销该事务 违反了某些完整性限制等 事务故障仅指这类非预期的故障 2. 系统故障 系统故障是指造成系统停止运转、要重启的故障。 例如,硬件错误(CPU故障)、操作系统故障、突然停电等都是系统故障。 这样的故障会影响正在运行的所有事务,但不破坏数据库。 可能会出现两种情况: 一些未完成事务的结果可能已经送入物理数据库中,从而造成数据库可能处于不正确的状态; 有些已经提交的事务可能有一部分结果还保留在缓冲区中,尚未写到物理数据库中,这样系统故障会丢失这些事务对数据的修改,也使数据库处于不一致状态。 3. 其他故障 介质故障指外存故障,如磁盘损坏等。 这类故障会对数据库造成破坏,并影响正在操作的数据库的所有事务。 发生的可能性很小,但破坏性很大。 计算机病毒的破坏性很大,而且极易传播,它也可能对数据库造成毁灭性的破坏。 可能对数据库造成的影响: 数据库本身被破坏; 数据库本身没有被破坏,但数据可能不正确(由事务非正常终止引起) 故障小结 各类故障,对数据库的影响有两种: 一是数据库本身被破坏。 二是数据库没有被破坏,但数据可能不正确,这是由于事务的运行被非正常终止造成的。 7.3.2数据库备份 数据的恢复涉及两个关键问题: 如何建立冗余数据; 如何利用这些冗余数据实施数据库恢复。 数据备份是指定期或不定期地对数据库数据进行复制。 备份的介质可以是磁带也可以是磁盘。 备份的内容 备份数据库应备份数据库中的: 表(结构),包含系统表、用户定义的表。 数据库用户(包括用户和用户操作权)。 用户定义的数据库对象和数据库中的全部数据。 数据库日志等内容。 备份频率 确定备份频率要考虑两个因素: 存储介质出现故障或其他故障时,允许丢失的数据量的大小。 数据库的事务类型(读多还是写多)以及事故发生的频率(经常发生还是不经常发生)。 通常情况下,数据库可以每周备份一次,事务日志可以每日备份一次。 对于一些重要的联机事务处理数据库,可以每日备份,事务日志则每隔数小时备份一次。 7.3.3数据库恢复 恢复数据库是指将数据库从错误描述状态恢复到正确的描述状态(最近的正确时刻)的过程。 1.恢复策略 (1) 事务故障的
文档评论(0)