溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL?Redo與Undo日志是什么

發布時間:2022-08-01 11:12:14 來源:億速云 閱讀:155 作者:iii 欄目:開發技術

這篇文章主要介紹“MySQL Redo與Undo日志是什么”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“MySQL Redo與Undo日志是什么”文章能幫助大家解決問題。

    1. Redo日志的介紹

    Redo日志是物理日志,記錄的是頁面的變化。

    1.1 Redo日志的作用

    • 提升數據庫寫入效率

    • 保證數據庫不丟數據,進行數據恢復

    1.2 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日志文件中,并且日志文件是循環寫入的

    MySQL?Redo與Undo日志是什么

    2. 寫入Redo日志的流程(MTR)

    • 用戶線程的操作會首先寫進log buffer

    • log buffer中的日志會順序寫入Redo邏輯日志中

    • 之后會落盤持久化存儲到磁盤上

    • 之后通知用戶已經存儲完成了

    3. Checkpoint機制

    Checkpoint是Redo日志中臟頁的標記位,有以下兩個作用:

    • 維護Redo日志,方便清理

    • 減小重啟的工作量

    MySQL?Redo與Undo日志是什么

    數據庫恢復流程:

    • 讀取 checkpoint 信息•從 checkpoint 位置開始讀取剩余日志

    • 解析日志并按 space_no 與 page_id 構建 hash 表

    • 應用 Redo 日志,Redo日志回放保證冪等性

    • 解析 binlog 構建 xid 列表

    • 掃描回滾段構建待提交事務列表

    • 回滾掉未在 xid 列表中的事務

    4. Undo日志介紹

    Undo log是邏輯日志,記錄的是數據的增量變化,它的作用是保證事務的原子性和事務并發控制??梢杂糜谑聞栈貪L,以及提供多版本機制(MVCC),解決讀寫沖突和一致性讀的問題。

    5. MVCC

    MVCC的意義:

    • 讀寫互不阻塞;

    • 降低死鎖概率;

    • 實現一致性讀。

    UndoLog在MVCC的作用:

    • 每個事務有一個單增的事務ID;

    • 數據頁的行記錄中包含了DB_ROW_ID,DB_TRX_ID,DB_ROLL_PTR;

    • DB_ROLL_PTR將數據行的所有快照記錄都通過鏈表的結構串聯了起來。

    關于“MySQL Redo與Undo日志是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女