SQLServer的檢查點、redo和undo
SQLServer的檢查點、redo和undo
檢查點與恢復效率的關係
檢查點將髒資料頁從當前資料庫的緩衝區快取記憶體重新整理到磁碟上。 這最大限度地減少了恢復時必須重做(Redo)的修改量。
為什麼在日誌檔案中設定了檢查點之後,基於日誌的恢復機制就可以提高效率了呢?如圖所示為檢查點發生時可能的事務的狀態。
① 事務1
其start和commit日誌記錄都發生在檢查點之前,這樣的事務其結果已經反映到物理介質上去了(因為檢查點會保證WAL協議,確保資料被寫入),所以在恢復時無須對該事務做Redo操作。
② 事務2
其start日誌記錄在檢查點之前發生,其commit記錄在故障點之前發生,說明日誌中事務已經完美提交,但資料不一定已經寫入,所以屬於圓滿事務,需要Redo操作。
③ 事務3
其start日誌記錄在檢查點之後發生,其commit記錄在故障點之前發生,說明日誌中事務已經完美提交,但資料不一定已經寫入,所以屬於圓滿事務,需要Redo操作。
④ 事務4
其start日誌記錄在檢查點之後發生,其commit記錄在故障點之前尚未發生,說明日誌中事務為中止事務,需要Undo操作。
⑤ 事務5
其start日誌記錄在檢查點之前發生,其commit記錄在故障點之前尚未發生,說明日誌中事務為中止事務,需要Undo操作。
由CheckPoint的機制可以看出,由於記憶體中的資料往往比持久化儲存中的資料更新,而CheckPoint保證了這部分資料能夠被持久化到磁碟,因此CheckPoint之前的資料一定不會再需要被Redo。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22996654/viewspace-2661050/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- redo與undo的一點點思考
- Sqlserver沒有單獨的undo檔案,使用tempdb和redo log來存放undo資料SQLServer
- redo和undo的區別
- 【TUNE_ORACLE】Oracle檢查點(四)檢查點對redo日誌的影響和redo日誌大小設定建議Oracle
- Redo 和 Undo 概念解析
- Oracle的redo 和undo的區別Oracle
- oracle redo和undo系列一Oracle Redo
- MySQL中的redo log和undo logMySql
- 關於Oracle的redo和undo的理解Oracle
- Oracle Redo and UndoOracle Redo
- 【REDO】Oracle redo undo 學習Oracle Redo
- 全域性檢查點和增量檢查點
- SQLServer 檢查1SQLServer
- MySQL Undo Log和Redo Log介紹MySql
- 全域性檢查點和增量檢查點(zt)
- UNDO REDO 區別
- Oracle完全檢查點和增量檢查點詳解Oracle
- 深入淺出-redo和undo記載01
- 深入淺出-redo和undo記載02
- 深入淺出redo和undo記載03
- MySQL 日誌 undo | redoMySql
- [20170411]bbed計算redo檢查和.txt
- 深入理解MYSQL undo redoMySql
- Undo和Current Online Redo損壞的處理方法
- Current online Redo 和 Undo 損壞的處理方法
- oracle體系結構梳理---redo和undo解析1Oracle
- 【開發篇sql】 基礎概述(二) undo和redoSQL
- 檢查及設定合理的undo表空間
- 基於Redo Log和Undo Log的MySQL崩潰恢復流程MySql
- 【Oracle】Current online Redo 和 Undo 損壞的處理方法Oracle
- MySQL redo與undo日誌解析MySql
- Oracle redo undo commit rollback剖析Oracle RedoMIT
- Oracle中undo 如何產生RedoOracle
- oracle體系結構梳理---redo和undo檔案解析Oracle
- LMT更新file header bitmap不產生redo和undo ?Header
- 淺析MySQL事務中的redo與undoMySql
- Oracle 檢查點佇列與增量檢查點Oracle佇列
- 深入理解MySQL系列之redo log、undo log和binlogMySql