数据库原理与设计法东南大学自动控制系邵家玉EMAILqj@.ppt

数据库原理与设计法东南大学自动控制系邵家玉EMAILqj@.ppt

  1. 1、本文档共326页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
活锁(live lock): first come first serve ?? 7.8.4?(S,U,X)锁 活锁(live lock): first come first serve ?? 7.9????死锁的检测、处理和防止 死锁(dead lock):对付死锁无非两种办法:一是检测死锁,发现死锁后处理死锁;二是防止死锁。 7.9.1?? 死锁的检测和处理 ?????? 1.???? 超时法 ?????? 2.??? 等待图法(wait-for graph) G=(W,U) 其中,W是结点的集合,w={Ti|Ti是数据库系统中当前运行的事务,i=1,2,…,n} U是边的集合,U={(Ti,Tj)|Ti等待Tj,i≠j} DBMS对死锁一般作如下处理: l??????? 在循环等待的事务中,选一个事务作为牺牲者(victim),给其他事务“让路”; l??????? 卷回牺牲的事务,释放其获得的锁及其他资源; l??????? 将释放的锁让给等待它的事务。 被牺牲事务的选择原则: l??????? 选择最迟交付的事务作为牺牲者 l??????? 选择获得锁最少的事务作为牺牲者 l??????? 选择卷回代价最小的事务作为牺牲者 7.9.2?? 死锁的防止 时间标记(time stamp简称时标ts):随时间增长的正整数。 系统启动时,ts=0,每当一个新事务开始运行时,ts+1,并把此时的ts赋予该事务,作为该事务的时标。 设有两个事务TA和TB,如ts(TA)<ts(TB),则表示TA早于TB,也就是TA比TB“年老”,或者说TB比TA“年轻”。 6.3.3?? 投影操作的实现 6.3.4?? 集合操作的实现 6.3.5?? 组合操作 第七章???事务管理 恢复 事务管理 并发控制 7.1??? 恢复引论 fault error failure loss 1.??单纯以后备复本为基础的恢复技术 2.???以后备复本和运行记录(log或journal)为基础的恢复技术 运行记录包括: (1)? 前象(Before Image BI)——undo (2)? 后象(After Image AI)——redo (3)? 事务状态 commit rollback/abort backward recovery —— undo forward recovery —— redo 3.?? 基于多复本的恢复技术 independent failure mode 多服务器DBS: 1. 双机热备份 2. 双机CLUSTER 3.?磁盘阵列RAID0~5 4.?等 7.2???????? 运行记录的结构 1.?? Active Transaction List (ATL) 2.?? Committed Transaction List (CTL) 3.?? 前象文件 4.?? 后象文件 措施: 1.?? 不保留已提交事务的前象 2.? 有选择地保留后象 3.?? 合并后象 7.3?? 更新事务的执行与恢复 更新事务在执行时应遵守下列两条规则: 1. 提交规则(commit rule) 2. 先记后写规则(log ahead rule) 方案: 1.? 后象在事务提交前完全写入数据库 其步骤如下: (1)???? TID→ATL (2)???? BI→log /*先记后写规则*/ (3)???? AI→DB /*在提交前,后象完全写入DB, 满足提交规则*/ (4)???? TID→CTL (5)???? 从ATL中删除TID 2.? 后象在事务提交后才写入数据库 其步骤如下: (1)???? TID→ATL (2)???? AI→log /*提交规则*/ (3)???? TID→CTL (4)???? AI→DB (5)???? 从ATL中删除TID 3. 后象在事务提交前后写入数据库 其步骤如下: (1)? TID→ATL (2)? AI、BI→log /*提交规则及先记后写规则*/ (3)? AI→DB(部分写入) (4)? TID→CTL (5)? AI→DB(继续完成) (6)? 从ATL中删除TID 7.4??易地更新恢复技术 设有数据库DB为: DB={F1,……Fj,……Fn} (1)?? 取M到内存,并读取M[j]; (2)?? 按M[j]找到PTj,并取PTj到内存中(为Ti所用的PTj的内存版本表示为PTji,见图7-8); (3)? 按PTji[k]取Fj的第k页Pjk至内存,并在内存中更新其内容,设更新后的Pjk为P’jk; (4)?写入P’jk至数据库的一个新地方,设其在磁盘上的地址为ADD(P

您可能关注的文档

文档评论(0)

xyl118 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档