日志类型与恢复.ppt

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
日志类型与恢复

1、Undo日志规则 事务的每一个修改操作都生成一个日志记录 T,x, old-value 在x被写到磁盘之前,对应该修改的日志记录必须已被写到磁盘上 当事务的所有修改结果都已写入磁盘后,将 Commit,T日志记录写到磁盘上 Write Ahead Logging (WAL日志) 先写日志 温柬卫仆租冗式迎噶耶纽专腕巩栓绍平蒸灿粳赣寂金遍讳父恳便径臭城硝日志类型与恢复日志类型与恢复 先写日志原则 把对数据的修改写到数据库中和把表示该修改的日志记录写道日志文件中是两个不同的操作 有可能在这两个操作之间发生故障,即两个写操作只完成了一个 为了保证数据库的可恢复,必须先把更新记录写到日志文件中,然后再写数据库修改 先写日志 T1, Begin Transaction T1,A,1000 设T1将A修改为900时发生故障。设此时900已写到数据库,但还未来得及写到日志中。 根据恢复策略,T1在恢复应UNDO,但此时由于后写日志,A的更新操作在日志中没有记录,因此无法将A恢复到1000 如果先写日志,则即使没有写到数据库中,也只不过多执行一次UNDO操作,不会影响数据库的一致性。 后写日志 T1, Begin Transaction 雏陈尽赤宙轧钨汪淹饮移攻坏念挛膘颓荒吾炕捎狠扦珠貌槽骑贬胎朝霉赶日志类型与恢复日志类型与恢复 1、Undo日志规则 T1: Read (A,t); t ? t -100; Write (A,t); Read (B,t); t ? t + 100; Write (B,t); Flush Log Output (A); Output (B); Flush Log Start,T T,A,1000 T,B,2000 Commit,T Log Initial: A=1000 B=2000 爽毫济弹仓祭促练虹胶寥滚举殊雀厦缄瘴腺卢滨毗拟偏蕊渔怔不依走淌祁日志类型与恢复日志类型与恢复 1、Undo日志规则 T1: Read (A,t); t ? t -100; Write (A,t); Read (B,t); t ? t + 100; Write (B,t); Flush Log Output (A); Output (B); Flush Log Fail here A:900 B:2100 A:1000 B:2000 … Start,T T,A,1000 T,B,2000 … Memory Disk 晰傲庶逻淮赣腋类庇宠睛谅踢仁砷磊戒拐硕萝慷洛鸵累战时诫裸倪叁劲毙日志类型与恢复日志类型与恢复 1、Undo日志规则 T1: Read (A,t); t ? t -100; Write (A,t); Read (B,t); t ? t + 100; Write (B,t); Flush Log Output (A); Output (B); Flush Log Fail here A:900 B:2100 A:900 B:2000 … Start,T T,A,1000 T,B,2000 … Start,T T,A,1000 T,B,2000 Memory Disk 汹樊榜组程慨倾炔糊目炊涸貉保峭郝符袁焦权拣丑揽挫鄙湍你恐捷酉宣岗日志类型与恢复日志类型与恢复 1、Undo日志规则 T1: Read (A,t); t ? t -100; Write (A,t); Read (B,t); t ? t + 100; Write (B,t); Flush Log Output (A); Output (B); Flush Log Fail here A:900 B:2100 A:900 B:2100 … Start,T T,A,1000 T,B,2000 Commit,T … Start,T T,A,1000 T,B,2000 Memory Disk 罚折闲隐可肮蹬爹慷庄王盐屏吴开郝赏四鞠坝擎专汰聋鸣簇抓蛹诽菜桶群日志类型与恢复日志类型与恢复 1、Undo日志规则 T1: Read (A,t); t ? t -100; Write (A,t); Read (B,t); t ? t + 100; Write (B,t); Flush Log Output (A); Output (B); Flush Log Success! Memory A:900 B:2100 A:900 B:2100 … Start,T T,A,1000 T,B,2000 Commit,T … Start,T T,A,1000 T,B,2000 Commit,

文档评论(0)

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

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

1亿VIP精品文档

相关文档