Redo日誌是實體日誌,記錄的是頁面的變化。
提升資料庫寫入效率
保證資料庫不遺失數據,進行資料復原
所謂REDO的組織方式,就是如何把需要的REDO內容記錄到磁碟檔案中,以方便高效的REDO寫入,讀取,恢復以及清理。我們這裡把REDO從上到下分成三層:邏輯REDO層、物理REDO層、檔案層。
邏輯REDO層
這一層是真正的REDO內容,順序的資料流,REDO由多個不同Type的多個REDO記錄收尾相連組成,有全域唯一的遞增的偏移sn,InnoDB會在全域log_sys中維護目前sn的最大值,並在每次寫入資料時將sn增加REDO內容長度。
物理REDO層
磁碟是區塊設備,InnoDB中也用Block的概念來讀寫數據,一個Block的長度OS_FILE_LOG_BLOCK_SIZE等於磁碟區的大小512B,每次IO讀寫的最小單位都是一個Block。
檔案層
最終REDO會被寫入到REDO日誌檔案中,且日誌檔案是循環寫入的
#使用者執行緒的操作會先寫入log buffer
中
log buffer
中的日誌會順序寫入Redo邏輯日誌中
之後會落盤持久化儲存到磁碟上
之後通知使用者已經儲存完成了
Checkpoint是Redo日誌中髒頁的標記位,有以下兩個作用:
維護Redo日誌,方便清理
減少重新啟動的工作量
資料庫復原流程:
讀取checkpoint訊息•從checkpoint 位置開始讀取剩餘日誌
解析日誌並按space_no 與page_id 建立hash 表
MVCC的意義:
UndoLog在MVCC中的作用:
以上是MySQL Redo與Undo日誌是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!