免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3424 | 回复: 1
打印 上一主题 下一主题

增量、完全检查点和heartbeat的个人理解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-31 10:23 |只看该作者 |倒序浏览
2、检查点是同步内存中修改的脏数据块到数据文件的一个事件并更新控制文件、数据文件,与事务提交无关,有两个作用:
①建立数据一致性
②fast instance recovery
因为完全检查点时不但会写脏块,还会在控制文件中记录迄今为止写入的进度,其实写入进度同时采用了两种手段来记录:一、采用不是很精确的完全检查点scn记法,即发生完全检查点的时候把dbwr上次(可以是各种原因所触发的)刚写完的那个dirty buffer的scn x记至数据文件和控制文件中去(是表现为dump控制文件中的Checkpoint cnt:44 scn: 0x0000.00060586 12/29/2005 08:42:27吗?);该scn是dirty buffer首次变化时候的scn;且所有dirty buffer都已按其第一次被修改时所对应的redo block address,即low rba作为排序依据同时放入到write lists 和8i才引入的checkpoint queue中去了,所以此况下的检查点动作还是一个短暂的通知动作,通知dbwr此次写脏块动作须止于何处(何处???怎么确定???人说active日志文件在手工强制完全检查点后会变为inactive,需结合此来理解!?),并把最近被写进文件的脏块的scn,而不是脏队列里某个buffer的scn,更不是系统当前scn,作为当前所有数据文件block的最新scn记录至数据文件和控制文件中,再(有的地方说是先dbwr,再记scn,我觉的说法是不准确的?期待确认)触发dbwr开始按队列写脏块便可,而不须等待dbwr写完成。但由于8i前版本缺少检查点队列,只有一个lru list记录了一些无序脏buffer,这样在发生检查点时将冻结所有dml来等待整个write lists中脏块被dbwr写入数据文件后才能继续下一步工作。(那时的write lists是什么概念?,只是一群无序的脏buffer?);在下一完全检查点到来之前的某时,如果系统crash,系统便会自动选择scn x这个点作为恢复起点,但由于完全检查点的触发条件不多,所以完全检查点发生的周期会很长(检查点cnt变化比较慢就可证明此点),这样也势必会增加db恢复时所需的时间,而且由于biti说的检查点scn的延迟更新,所以我想这个恢复起点后的某些脏数据可能其实已经写到数据文件里去了,只是没及时反映到数据文件和控制文件里去,而恢复的时候又是根据数据文件和控制文件来做的,所以势必会将这些数据重写一遍,这便是由于恢复起点不够精确而导致的低效率,所以为了能选择到更精确些的恢复起点并为进一步缩短恢复所需时间,9i引入了增量检查点机制,即二、采用更精确些的增量检查点scn,是实现fast instance recovery的重要手段;
1、为解决相应上面的完全检查点scn的精度问题,引入了ckpt 的heartbeat概念,即ckpt每3秒钟,会在控制文件中记录下(在数据文件头中不会记录?)下次dbwr写脏数据时所应写至的结束点位置,即告诉dbwr一个checkpoint queue中的结束点(biti说:“这个对于 ckpt 进程来说叫 heartbeat”,所以该位置就是ckpt heartbeat  3秒一次所取得值来标示的吧,那heartbeat的值又是根据什么的值转换过来的呢?还是wanghi说:“在控制文件checkpoint progress record这个区域里的low rba,on-disk rba值来标示结束点?”)(“非完全检查点的10几种条件触发写操作所引起dbwr写脏”,也是写至该处为止吗?)
2、为解决相应上面的完全检查点执行周期太长而引起的巨大i/o问题,引入了ckpt的增量检查点概念,在下一次完全检查点到来之前,先设定些触发条件(见下附1)来先将一部分脏数据写入数据文件,以减少当完全检查点到来时写所有脏数据时巨大i/o对系统性能的影响;注意不同于完全检查点,增量检查点发生时,增量检查点并不会触发dbwr的写操作,而只是比上次的完全检查点所记录的scn更精确些地在控制文件(数据文件中应不会记录吧?)中记录下dbwr的当前进度(因为除完全检查点外,还有10几种条件会触发dbwr写脏)(此进度应该是用wanghi所述的low rba,on-disk rba来标示吧?)

附1
完全检查点的触发:alter system checkpoint
                  Shutdown normal/transaction/immediate
增量检查点的触发:fast_start_mttr_target
                  Log_checkpoint_timeout
                  Log_checkpoin_interval
                  Fast_start_io_target
日志切换
Alter datafile,tablespace online/offline?
alter tablespace XXX begin backup,end backup?
alter system switch logfile?


肯请各位不吝赐教,理解是否正确?

论坛徽章:
0
2 [报告]
发表于 2008-03-20 08:13 |只看该作者
这么好的帖子为什么没人顶……………………………………………………………………………………
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP