Buffer Cache結構及LRU, LRBA , Checkpoint Queue[final]
Buffer Cache結構:
連結串列為 Hash Chain "-->"
Buffer header裡面記錄的指標就指向buffer cache中的該資料塊本身
[hash bucket 0] --> [buffer header] --> [buffer header] --> [buffer header] ...
[hash bucket 1] --> [buffer header] ...
[hash bucket 2] --> [buffer header] --> [buffer header] ...
[hash bucket 3] --> [buffer header]
[hash bucket 4] --> [buffer header] --> [buffer header]
[hash bucket 5] --> [buffer header] --> [buffer header] --> [buffer header] ...
...
LRU: Least Recently Used,也就是指最近最少使用的buffer header連結串列。LRU連結串列串聯起來的buffer header都指向可用資料塊。buffer按照被使用的先後順序掛在LRU連結串列上,先被使用的buffer掛在LRU連結串列的後面,後被使用的buffer則被掛在LRU連結串列的前面。如果buffer被DML語句修改了,則該buffer會從LRU連結串列上摘下來。換句話說,LRU連結串列上的buffer header所指向的buffer都是可用資料塊。
檢查點佇列 (Checkpoint Queue,Dirty List) --
該佇列上串起來的都是髒資料塊所對應的buffer header。而每次DBWn寫髒資料塊時,也是從檢查點佇列上掃描髒資料塊,並將這些髒資料塊實際寫入資料檔案的。當寫完以後,DBWn會將這些已經寫入資料檔案的髒資料塊從檢查點佇列上摘下來。
檢查點佇列上的buffer header是按照資料塊第一次被修改的時間的先後順序來排列的。越早修改的資料塊的buffer header排在越前面,同時如果一個資料塊被修改了多次的話,在該連結串列上也只出現一次。buffer header還記錄了髒資料塊在第一次被修改時,所對應的重做條目在重做日誌檔案中的地址,也就是LRBA (Low Redo Block Address).
[buffer header0]->[buffer header2]->[buffer header3]->[buffer header4]->....
LRBA --
Redo log file中的LRBA (Low Redo Block Address) 表示髒資料塊第一次被修改時候所對應的重做條目在重做日誌檔案中的地址 (Low表示第一次修改)
[LRBA0][LRBA1][LRBA2][LRBA3][LRBA4][LRBA5][LRBA6]
檢查點位置(Checkpoint Position) --
表示出現系統崩潰後日志檔案中的重做條目恢復起點
當前檢查點佇列上的第一個buffer header,該buffer header中所記錄的LRBA 就是checkpoint position, 該檢查點位置記錄在控制檔案裡
DBWn負責寫檢查點佇列上的髒資料塊,而CKPT負責記錄當前檢查點佇列的第一個資料塊所對應的的重做條目在日誌檔案中的地址。而到底應該寫哪些髒資料塊,寫多少髒資料塊,則要到檢查點佇列上才能確定的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-677949/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- buffer cache部分原理(LRU)
- cache buffer lru chain latch等待事件AI事件
- oracle buffer cache管理機制_buffer cache dump與lru機制小記Oracle
- Library Cache 結構及記憶體管理 [final]記憶體
- buffer cache實驗6-latch:cache buffers lru chainsAI
- Buffer Cache的記憶體結構記憶體
- Oracle中Buffer Cache記憶體結構Oracle記憶體
- LRU cache原理及go實現Go
- ORACLE buffer cache 原理 --LRU連結串列(參照學習:oracle核心技術揭秘)Oracle
- 轉_Buffer Cache的原理及使用
- oracle實驗記錄(buffer_cache分析(3)cbc lru chain latch)OracleAI
- buffer cache 記憶體管理物理結構純乾貨記憶體
- 17_buffer_cache記憶體組織結構剖析記憶體
- Oracle Buffer Cache原理總結(一)Oracle
- Oracle Buffer Cache原理總結(二)Oracle
- cache buffers lru chainAI
- buffer cache實驗1-記憶體結構圖解記憶體圖解
- Oracle10g data buffer cache的記憶體結構Oracle記憶體
- data buffer cache的一點總結。
- buffer cache深度分析及效能調整(五)
- buffer cache深度分析及效能調整(六)
- buffer cache深度分析及效能調整(四)
- Leetcode LRU CacheLeetCode
- cache buffers LRU chain latchAI
- [LeetCode] LRU CacheLeetCode
- Buffer Cache 原理
- cache buffer chainAI
- data buffer cache的一點總結 -- 轉
- cache buffers chains vs cache buffers lru chainAI
- cache buffers chains and cache buffers lru chainsAI
- IO之核心buffer----"buffer cache"
- 關於cache_buffer_lru_chain的疑問,知道的給小弟解答一下。AI
- Leetcode-LRU CacheLeetCode
- LRU Cache leetcode javaLeetCodeJava
- Buffer Cache Hit Ratio
- Oracle Buffer Cache原理Oracle
- Oracle database buffer cacheOracleDatabase
- CACHE BUFFER CHAINSAI