29_檢查點佇列(checkpoint queue)

哎呀我的天吶發表於2014-12-11


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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章