【效能優化】增量檢查點
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將離日誌檔案末尾最近的那個位置確認為檢查點位置。
from ITPUB http://www.itpub.net/thread-1341844-2-1.html
(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將離日誌檔案末尾最近的那個位置確認為檢查點位置。
from ITPUB http://www.itpub.net/thread-1341844-2-1.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-671966/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 全域性檢查點和增量檢查點
- Oracle 檢查點佇列與增量檢查點Oracle佇列
- 全域性檢查點和增量檢查點(zt)
- Oracle完全檢查點和增量檢查點詳解Oracle
- ORACLE增量檢查點,LRBA,BWROracle
- 增量檢查點(incremental checkpoint)的解疑REM
- OCP知識點講解 之 檢查點佇列與增量檢查點佇列
- oracle ckpt檢查點型別(增量及常規完全檢查點)checkpointOracle型別
- 對於增量檢查點工作原理的理解
- 【TUNE_ORACLE】Oracle檢查點(二)檢查點效能Oracle
- 【CHECKPOINT】Oracle檢查點優化與故障處理Oracle優化
- 【TUNE_ORACLE】Oracle檢查點(三)增量檢查點四個關鍵引數介紹Oracle
- EntityFramework優化:查詢效能Framework優化
- mysql查詢優化檢查 explainMySql優化AI
- 前端效能優化的點前端優化
- MySQL-效能優化-索引和查詢優化MySql優化索引
- 效能優化之分頁查詢優化
- 全文查詢的效能優化優化
- 效能優化查詢語句優化
- mysql效能的檢查和調優方法MySql
- Go工程管理 19 | 效能優化:Go 語言如何進行程式碼檢查和優化?Go優化行程
- spark效能優化幾點注意Spark優化
- MySQL: 使用explain 優化查詢效能MySqlAI優化
- mysql查詢效能優化總結MySql優化
- SQLServer效能優化之查詢提示SQLServer優化
- mysql效能優化-慢查詢分析、優化索引和配置MySql優化索引
- 【效能優化】Oracle 效能優化:降低列值聚簇因子 提高查詢效率優化Oracle
- Flutter 應用效能檢測與優化Flutter優化
- ClickHouse效能優化?試試物化檢視優化
- ClickHouse 效能優化?試試物化檢視優化
- 前端效能常見優化點分析前端優化
- 快速Python效能優化要點Python優化
- MySQL系列-- 4. 查詢效能優化MySql優化
- 【oracle 效能優化】組合索引查詢。Oracle優化索引
- oracle效能優化(二)-調整查詢Oracle優化
- Android效能優化之被忽視的優化點Android優化
- 增量式開發的優點 (轉)
- Mongo效能檢查Go