29_检查点队列(checkpoint queue)


LRU将没有使用的块连接起来,按照块访问的频率,热度 排序

LRUW将脏块连接起来,以后DBWn写脏块就从这个队列中找去写,按照块访问的频率,热度 排序,不经常被访问的脏块放在链的冷端,优先写到磁盘上,写完后变成干净块,这时就可挂在LRU上。

CBC链,是按地址排列

我们的脏块不仅挂在LRUW上还挂在checkpoint queue上

 

将块组织连接起来就是为了方便管理

 

Checkpoint queue链接脏块,按照块第一次脏的时间排序,也可以说是按LRBA地址连接。

 

检查点队列按照此方式排序的意义:

RBA redo block address (修改数据库会产生日志,这就是日志的地址 , checkpoint queue 队列相应的块中记下 RBA

LRBA : 块第一次被脏的那个日志地址。

HRBA :块最近一次脏的地址。

On disk RBA current 日志最后一条日志的地址,即数据库多能保存的日志最后的那个地址。在磁盘上 current

 

对于每一个脏块来说有一个HRBA,LRBA

 

CKPT进程:两种工作方式

1、完全检查点,发生时会触发DBWn将所有脏块写到磁盘上。(关闭数据库)

2、增量检查点,将检查点队列中第一个脏块的LRBA地址记录到控制文件中(每隔三秒),发生时会检查检查点队列如果发现队列上脏块太多,并且发现io不是很忙,那么将上边的部分写到磁盘中,触发DBWn写。



Alter system flush buffer_cache;

flush之后RBA变成无穷大了

Select CPDRT,CPLRBA_SEQ||','||CPLRBA_BNO||','||CPLRBA_BOF "LOW RBA", CPODR_SEQ||','||CPODR_BNO||',' ||CPODR_BOF "On disk RBA" ,CPODS,CPODT,CPHBT From x$kcccp;

 

检查点是数据恢复的起点。



切换日志组生成增量检查点,dbwr可能过一会写active就是说脏块还没写完或者根本就没写。

Alter system checkpoint 全局检查点。dbwr立马写。

关机慢的原因就是生成全局检查点,Buffer中的数据全部写到磁盘中。

==============================================================================

 

这是部分检查点为什么叫部分就是因为他是一部分,dbwr也要立即写。

======================================================================================================

增量检查点往检查点队列里排,排到他dbwr才写,这就是问什么redo中active


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29990276/viewspace-1364716/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29990276/viewspace-1364716/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值