增量檢查點(incremental checkpoint)的解疑
原文:oracle8以後Oracle推出了incremental checkpoint的機制,在以前的版本里每次常規checkpoint時都會做一個full thread checkpoint,這樣的話所有髒資料會被寫到磁碟,巨大的i/o對系統效能帶來很大影響。為了解決這個問題,oracle引入了checkpoint queue機制,每一個髒塊會被移到檢查點佇列裡面去,按照low rdb(第一次對此塊修改對應的redo block address)來排列,靠近檢查點佇列尾端的資料塊的low rba值是最小的,而且如果這些贓塊被再次修改後它在檢查點佇列裡的順序也不會改變,這樣就保證了越早修改的塊越早寫入磁碟。每隔3秒鐘ckpt會去更新控制檔案中的checkpoint progress recored區域,記錄checkpoint執行的情況。
注意:增量檢查點並不去更新資料檔案頭,只是在控制檔案中記錄了checkpoint progress record這個區域,記下low rba,on-disk rba等資訊。這些資訊就可以用來快速恢復。
每隔3秒鐘ckpt會去更新控制檔案中的checkpoint progress recored區域,記錄checkpoint執行的情況。
解疑:這裡應該是只更新控制檔案,每3秒不是更新資料檔案頭,而是在控制檔案中記錄checkpoint的執行情況,基於增量檢查點和checkpoint queue的原理,在發生檢查點的時候,ckpt 程式每次只是告訴dbwr,寫dirty buffe要一直寫到最新這個位置(發生檢查點:也就是alter system checkpoint),這樣做呢,僅僅是告訴dbwr一個checkpoint queue中的結束點,ckpt絕對不會等到dbwr寫完所有髒資料在更新控制檔案和資料檔案頭,而是每3秒鐘,在控制檔案中的checkpoint progress recored區域中報告一下dbwr最新寫入的位置(也就是dbwr的寫狀態的scn)。這樣使得,比如資料庫要做恢復的時候(instance recovery)可以從這個最新報告的scn位置開始做恢復,而不是從資料檔案中的checkpoint scn開始做恢復,這樣將縮短恢復時間,尤其是instance crash的情況下啟動更快。另外要注意的是,檢查點發生的時候,ckpt 去更新資料檔案頭和控制檔案,並不是把當前檢查點發生時候的scn 更新進去,而是把上一次dbwr寫入已經完成的檢查點發生時候的 scn 更新進去,也就是說,更新控制檔案和資料檔案頭是滯後於檢查點的發生的,這個從恢復的原理也很容易理解,因為檢查點發生的時候dirty buffer還沒有寫入,自然不能立即更新成當前的scn了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9390331/viewspace-694961/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle ckpt檢查點型別(增量及常規完全檢查點)checkpointOracle型別
- oracle checkpoint檢查點Oracle
- 全域性檢查點和增量檢查點
- Oracle 檢查點佇列與增量檢查點Oracle佇列
- 全域性檢查點和增量檢查點(zt)
- [zt]Oracle檢查點ckpt (checkpoint)Oracle
- oracle checkpoint檢查點系列一Oracle
- Incremental checkpoint up to RBAREM
- Oracle完全檢查點和增量檢查點詳解Oracle
- postgresql 檢查點調整 checkpoint 轉SQL
- zt_checkpoint檢查點解密(轉)解密
- object checkpoint物件檢查點小記Object物件
- 【效能優化】增量檢查點優化
- ORACLE增量檢查點,LRBA,BWROracle
- 【TUNE_ORACLE】Oracle檢查點(一)檢查點(Checkpoint)概念介紹Oracle
- TensorFlow——Checkpoint為模型新增檢查點模型
- 29_檢查點佇列(checkpoint queue)佇列
- 對於增量檢查點工作原理的理解
- OCP知識點講解 之 檢查點佇列與增量檢查點佇列
- 【體系結構】SCN與checkpoint(檢查點)
- 【CHECKPOINT】Oracle檢查點優化與故障處理Oracle優化
- Oracle SCN機制解析 (SCN, checkpoint檢查點) - finalOracle
- 【TUNE_ORACLE】Oracle檢查點(三)增量檢查點四個關鍵引數介紹Oracle
- 那些操作會發生區域性檢查點(Partial checkpoint)!
- PostgreSQL 13支援增量排序(Incremental Sorting)SQL排序REM
- 【ASK_ORACLE】檢查點錯誤“Cannot allocate new log”和“Checkpoint not complete”Oracle
- 檢查點(Checkpoint)優化及故障排除指南 (文件 ID 1526118.1)優化
- 運用incremental backup(增量備份)恢復歸檔GAP的DGREM
- 讀書筆記-增量學習-Large Scale Incremental Learning筆記REM
- 【TUNE_ORACLE】Oracle檢查點(二)檢查點效能Oracle
- 改變ogg抽取程式檢查點檔案中的檢查點
- Oracle 檢查點涉及的SCNOracle
- 高效穩定的通用增量 Checkpoint 詳解之二:效能分析評估
- SQLServer的檢查點、redo和undoSQLServer
- unix date命令解疑
- 【TUNE_ORACLE】Oracle檢查點(五)建立並利用Statspack定位檢查點故障Oracle
- RoleAssigner類的理解疑惑
- 關於oracle的ckpt(檢查點程式)Oracle