系统实豪现技术.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
系统实豪现技术

DBS运行时,对故障的处理 * 易失性存储器:访问速度很快,但是一旦发生故障,信息立即丢失。 非易失性存储器:系统发生故障,存储的信息不会丢失,但是如果硬件自己出故障了就会导致信息丢失。访问速度比易的慢几个数量级。 * 块是内外存数据交换的基本单位。 * 建立日志可以实现。把描述修改的信息输入到稳定存储器中,但此时并不修改磁盘中的数据,直到事务的COMMIT操作为止。 * 数据库的恢复,意味着把数据库恢复到最近一次故障前的一致性状态。 原理简单,但是实现复杂 * 可以预期的事务故障:在代码中加入判断和rollback语句,当不符合,就直接回退undo 非预期事务故障:直接对该事务进行undo操作。 系统故障:会影响到正在运行的所有事务,并主存中的内容丢失,但不破坏数据库。DBMS恢复子系统必须在系统重启时对其进行处理。 * 前面提到UNDO,REDO处理,实际都是采用检查点方法实现的。 * SQL不包含显示的begin transaction,程序一开始就是第一个事务的开始,遇到Commit和Rollback,意味着一个事务结束,同时开始另一个事务。 * 在多用户共享系统中,许多事务可能同时对同一数据进行操作(”并发操作”)。 DBMS的并发控制子系统负责协调并发事务的执行,保证数据库的完整性,同时避免用户得到不正确的数据。 * 即使每个事务单独执行时时正确的,但是多个事务并发执行时,如果系统不加以控制,仍会破坏数据库的一致性,或用户读了不正确的数据。 * 这些问题都需要并发控制子系统来解决。 * 采用X锁并发度低,只允许一个事务独锁事务,其他事务只能排队等待。 * 封锁对象可以很大,比如整个数据库加锁,也可以很小,比如只对某个属性值加锁。 * 在运行封锁机制时,还需要约定一些规则,这些规则称为协议。 * * 利用封锁技术,可以避免并发操作引起的各种错误,但有可能产生其他3个问题。 * * 数据库系统运行的最小逻辑工作单位是“事务”,所有对数据库的操作,都要以事务作为一个整体单位来执行或撤销。 * 8.3.1并发操作带来的三个问题(3) 图8.8 事务T2在时间t4读了未提交的A值,并在时间t8丢失了自己的更新 2.读脏数据问题(例8.4,用户读了“脏数据”,引起 自身的更新操作被丢失,破坏了数据库的完整性) 8.3.1并发操作带来的三个问题(4) 图8.8 事务T1两次读取A的值,却得到了不同的结果 3.不可重复读问题(例8.5) 8.3.1并发操作带来的三个问题(5) 时间 更新事务T1 数据库中A值 更新事务T2 t0 ? 100 ? t1 FIND A ? ? t2 ? ? FIND A t3 A:=A-30 ? ? t4 ? ? A:=A*2 t5 UPD A ? ? t6 ? 80 UPD A t8 ? 200 ? 图8.5 在时间t8丢失了事务T1的更新 ① ② ③ 解决方法: 8.3.2 封锁技术(1) 定义8.3 锁(lock)是一个与数据项相关的变量,对可能应用于该数据项上的操作而言,锁描述了该数据项的状态。 通常在数据库中每个数据项都有一个锁。锁的作用是使并发事务对数据库中数据项的访问能够同步。 封锁技术中主要有两种封锁: ●排他型封锁 ●共享型封锁 8.3.2 封锁技术(2) 1.排他型封锁(X锁,写锁) X锁定义:如果事务T对某个数据R(可以是数据项、记录、数据集乃至整个数据库)实现了X锁,那么在T对数据R解除封锁之前,不允许其他事务T再对该数据加任何类型的锁。这种锁称为“X锁”。 X锁的操作有两个: 封锁操作 “XFIND R”:表示事务对数据R申请加X锁,若成功,则可以读或写数据R,若不成功,那么这个事务将进入等待队列,直到获得X锁,事务才继续做下去。 解锁操作 “XRELEASE R”:表示事务要解除对数据R的X锁 X锁的解除操作应该合并到事务的结束(COMMIT或ROLLBACK)操作中。 8.3.2 封锁技术(3) 例8.6 使用X锁技术,可以解决图8.5的丢失更新问题。 图8.9 等事务T1更新完成后再执行事务T2 2.共享型封锁(S锁,读锁) 定义8.5 如果事务T对某数据加上S锁后,仍允许其他事务再对该数据加S锁,但在对该数据的所有S锁都解除之前决不允许任何事务对该数据加X锁。 S锁的操作有三个: 封锁操作 “SFIND R 升级和写操作 “UPDX R” 解锁操作 “SRELEASE R” 可以看出,获准S锁的事务只能读数据,不能更新数据,若要更新,则先要把S锁升级为X锁。 另外,由于S锁只允许读数据,因此解除S锁的操作不必非要合并到事务的结束操作中去,可以随时根据需要解除S锁。 8.3.2 封锁技术(4) 8.3.2 封锁技术

文档评论(0)

135****1071 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档