关于前滚和重做

[复制链接]
查看11 | 回复4 | 2014-2-18 16:50:09 | 显示全部楼层 |阅读模式
各位大侠好:

关于前滚和重做概念有几个问题想请教一下:

场景一:

未提交的事务, redo日志已写到日志文件时,数据缓冲区中的脏数据已经写入数据文件,此时宕机,后重启

请问实例恢复时前滚,从最后一次检查点开始重做日志文件记录的日志,是只做提交的日志,还是提交未提交的都重做?

并且对于场景一的情况,重做这个已更新的数据块时会跳过不重做还是重复再做一次?

场景二:

未提交的事务, redo日志已写到日志文件时,数据缓冲区中的脏数据已经写入数据文件,此时用户rollback,数据缓冲区数据块恢复正常,

请问这还算脏块吗?之后还会将数据文件再更新回原来的数据文件吗?如果还没来得及同步给数据文件,那么宕机后前滚,还是之前的问题,

会重做修改数据的日志吗?还是会有什么标记直接做rollback,忽略前面的?

回复

使用道具 举报

千问 | 2014-2-18 16:50:09 | 显示全部楼层
场景一:

未提交的事务, redo日志已写到日志文件时,数据缓冲区中的脏数据已经写入数据文件,此时宕机,后重启

请问实例恢复时前滚,从最后一次检查点开始重做日志文件记录的日志,是只做提交的日志,还是提交未提交的都重做?

并且对于场景一的情况,重做这个已更新的数据块时会跳过不重做还是重复再做一次?
实例恢复的起始点,是记录在控制文件的LRBA。从些处开始,应用每一条Redo Recorder。

场景二:

未提交的事务, redo日志已写到日志文件时,数据缓冲区中的脏数据已经写入数据文件,此时用户rollback,数据缓冲区数据块恢复正常,

请问这还算脏块吗?之后还会将数据文件再更新回原来的数据文件吗?如果还没来得及同步给数据文件,那么宕机后前滚,还是之前的问题,

会重做修改数据的日志吗?还是会有什么标记直接做rollback,忽略前面的?
还算脏块。
理解检查点的关键,就是放弃检查点这个概念。完全检查点还好说,“某个时刻触发了增量检查点”,这句话是错的,只会让你越来越糊途。
增量检查点是一套机制,不存在某个时刻被触发这样的动作。
回复

使用道具 举报

千问 | 2014-2-18 16:50:09 | 显示全部楼层
数据处理的原理与机制,越讨论越能理解透彻。
回复

使用道具 举报

千问 | 2014-2-18 16:50:09 | 显示全部楼层
vage 发表于 2013-8-5 23:01
场景一:

未提交的事务, redo日志已写到日志文件时,数据缓冲区中的脏数据已经写 ...

非常感谢您的回答,看过您的文章,呵呵,我还要继续多加看书
回复

使用道具 举报

千问 | 2014-2-18 16:50:09 | 显示全部楼层
oralin_deng 发表于 2013-8-6 08:21
数据处理的原理与机制,越讨论越能理解透彻。

恩恩,是挺深的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行