全域性檢查點和增量檢查點(zt)
1、 完全檢查點
在Oracle8i之前,資料庫的發生的檢查點都是完全檢查點,完全檢查點會將資料緩衝區裡面所有的髒資料塊寫入相應的資料檔案中,並且同步資料檔案頭和控制檔案,保證資料庫的一致。完全檢查點在8i之後只有在下列兩種情況下才會發生:
(1、)DBA手工執行alter system checkpoint的命令;
(2、)資料庫正常shutdown(immediate,transcational,normal)。
由於完全檢查點會將所有的髒資料庫塊寫入,巨大的IO往往會影響到資料庫的效能。因此Oracle從8i開始引入了增量檢查點的概念。
2、 增量檢查點
Oracle從8i開始引入了檢查點佇列這麼一種概念,用於記錄資料庫裡面當前所有的髒資料塊的資訊,DBWR根據這個佇列而將髒資料塊寫入到資料檔案中。檢查點佇列按時間先後記錄著資料庫裡面髒資料塊的資訊,裡面的條目包含RBA(Redo Block Address,重做日誌裡面用於標識檢查點期間資料塊在重做日誌裡面第一次發生更改的編號)和資料塊的資料檔案號和塊號。在檢查點期間不論資料塊更改幾次,它在檢查點佇列裡面的位置始終保持不變,檢查點佇列也只會記錄它最早的RBA,從而保證最早更改的資料塊能夠儘快寫入。當DBWR將檢查點佇列裡面的髒資料塊寫入到資料檔案後,檢查點的位置也要相應地往後移,CKPT每三秒會在控制檔案中記錄檢查點的位置,以表示Instance Recovery時開始恢復的日誌條目,這個概念稱為檢查點的“心跳”(heartbeat)。檢查點位置發生變更後,Oracle裡面透過4個引數用於控制檢查點位置和最後的重做日誌條目之間的距離。在這裡面需要指出的是,多數人會將這4個引數看作控制增量檢查點發生的時間。事實上這是錯誤的,這4個引數是用於控制檢查點佇列裡面的條目數量,而不是控制檢查點的發生。
(1、)fast_start_io_target
該引數用於表示資料庫發生Instance Recovery的時候需要產生的IO總數,它透過v$filestat的AVGIOTIM來估算的。比如我們一個資料庫在發生Instance Crash後需要在10分鐘內恢復完畢,假定OS的IO每秒為500個,那麼這個資料庫發生Instance Recovery的時候大概將產生500*10*60=30,000次IO,也就是我們將可以把fast_start_io_target設定為30000。
(2、)fast_start_mttr_target
我們從上面可以看到fast_start_io_target來估算檢查點位置比較麻煩。Oracle為了簡化這個概念,從9i開始引入了fast_start_mttr_target這麼一個引數,用於表示資料庫發生Instance Recovery的時間,以秒為單位。這個引數我們從字面上也比較好理解,其中的mttr是mean time to recovery的簡寫,如上例中的情況我們可以將fast_start_mttr_target設定為600。當設定了fast_start_mttr_target後,fast_start_io_target這個引數將不再生效,從9i後fast_start_io_target這個引數被Oracle廢除了。
(3、)log_checkpoint_timeout
該引數用於表示檢查點位置和重做日誌檔案末尾之間的時間間隔,以秒為單位,預設情況下是1800秒。
(4、)log_checkpoint_interval
該引數是表示檢查點位置和重做日誌末尾的重做日誌塊的數量,以OS塊表示。
(5、)90% OF SMALLEST REDO LOG
除了以上4個初始化引數外,Oracle內部事實上還將重做日誌檔案末尾前面90%的位置設為檢查點位置。在每個重做日誌中,這麼幾個引數指定的位置可能不盡相同,Oracle將離日誌檔案末尾最近的那個位置確認為檢查點位置。
=============================================
1. oracle 7 中只有全域性檢查點,因為沒有checkpoint queue,dirty buffer是無序的,所以必須一次性寫出,寫出的過程中要lock dirty buffer不能再被修改。
oracle 8 中全域性檢查點變成了增量檢查點,它是和checkpoint queue一起出現的。增量檢查點發生的時候,ckpt檢查點程式將已經完成的最後一個檢查點寫到資料檔案頭和控制檔案,通知dbwr開始寫資料檔案寫到檢查點觸發這個時刻(也就是當前時刻)。在checkpoint queue中,dirty buffer按照低重做值(第一次變髒的順序)排序,所以在寫出的時候dirty buffer可以同時被修改。這是增量檢查點最重要的作用。
有一個叫heartbeat的概念,也就是ckpt檢查點程式每3秒將當前dbwr寫的進度(rba)寫到控制檔案中。於是這個就縮短了instance recovery和media recovery的過程(當然這個過程也不是越短越好,否則dbwr寫太頻繁會帶來I/O方面的問題)。這是增量檢查點的另一個好處。
2. 這幾個引數就是透過oracle的演算法,決定了下一次增量檢查點發生的時間或者說位置。
3. 9i開始推薦使用fast_start_mttr_target,另外的引數都置0。
Whenever you set FAST_START_MTTR_TARGET
to a nonzero value, and while MTTR advisory is ON
, Oracle Corporation recommends that you disable (set to 0) the following parameters:
LOG_CHECKPOINT_TIMEOUT
LOG_CHECKPOINT_INTERVAL
FAST_START_IO_TARGET
Because these initialization parameters either override FAST_START_MTTR_TARGET
or potentially drive checkpoints more aggressively than FAST_START_MTTR_TARGET
does, they can interfere with the simulation.
這裡“MTTR advisory is ON”的條件是,STATISTICS_LEVEL is set to TYPICAL or ALL,以及the initialization parameter FAST_START_MTTR_TARGET is set to a nonzero value。
http://roujiaweize.spaces.live.com/blog/cns!9745F14B4AEB3B72!941.entry
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-997143/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle完全檢查點和增量檢查點詳解Oracle
- 【TUNE_ORACLE】Oracle檢查點(三)增量檢查點四個關鍵引數介紹Oracle
- [20200402]增量檢查點時間間隔.txt
- 【TUNE_ORACLE】Oracle檢查點(二)檢查點效能Oracle
- [20190312]關於增量檢查點的疑問(補充).txt
- SQLServer的檢查點、redo和undoSQLServer
- 【TUNE_ORACLE】Oracle檢查點(一)檢查點(Checkpoint)概念介紹Oracle
- 【TUNE_ORACLE】Oracle檢查點(五)建立並利用Statspack定位檢查點故障Oracle
- Innodb檢查點和redo寫盤時機
- Oracle 檢查點涉及的SCNOracle
- 揭示檢查點的祕密
- postgresql10.3 檢查點調整SQL
- postgresql 檢查點調整 checkpoint 轉SQL
- MySQL什麼是InnoDB檢查點?MySql
- TensorFlow——Checkpoint為模型新增檢查點模型
- PG檢查點刷寫髒頁
- uniapp 全域性檢查登陸並跳轉函式APP函式
- 健康檢查,檢查啥,怎麼檢查?
- 【TUNE_ORACLE】Oracle檢查點(四)檢查點對redo日誌的影響和redo日誌大小設定建議Oracle
- 【體系結構】SCN與checkpoint(檢查點)
- 解讀程式碼檢查規則語言CodeNavi的表示式節點和屬性
- VMware相容性檢查指北
- [20181203]改變檔案大小與檢查點.txt
- 202009-1 稱檢測點查詢(Java 100)Java
- VCS中檢查Cluster中節點的狀態
- 【CHECKPOINT】Oracle檢查點優化與故障處理Oracle優化
- OpenJDK的“CRaC檢查點協調恢復” - foojayJDK
- SAP ATP可用性檢查中的可用性檢查規則的確定
- 【ASK_ORACLE】檢查點錯誤“Cannot allocate new log”和“Checkpoint not complete”Oracle
- 使用汙點分析檢查log4j問題
- SOLIDWORKS如何檢查模型對稱性Solid模型
- 索引檢查索引
- K8S節點異常怎麼辦?TKE"節點健康檢查和自愈"來幫忙K8S
- 物化檢視(zt)
- mac地址檢查Mac
- 答案檢查器
- Kubernetes:健康檢查
- [20180306]資料塊檢查和.txt
- openGauss 檢查時間一致性