欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL Redo與Undo日志詳細解析

 更新時間:2022年07月31日 09:32:16   作者:樹獺叔叔???????  
這篇文章主要介紹了MySQL Redo與Undo日志詳細解析,Redo日志是物理日志,記錄的是頁面的變化,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下

1. Redo日志的介紹

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

1.1 Redo日志的作用

  • 提升數(shù)據(jù)庫寫入效率
  • 保證數(shù)據(jù)庫不丟數(shù)據(jù),進行數(shù)據(jù)恢復

1.2 Redo日志的格式與類型

所謂REDO的組織方式,就是如何把需要的REDO內(nèi)容記錄到磁盤文件中,以方便高效的REDO寫入,讀取,恢復以及清理。我們這里把REDO從上到下分為三層:邏輯REDO層、物理REDO層和文件層。

  • 邏輯REDO層

這一層是真正的REDO內(nèi)容,順序的數(shù)據(jù)流,REDO由多個不同Type的多個REDO記錄收尾相連組成,有全局唯一的遞增的偏移sn,InnoDB會在全局log_sys中維護當前sn的最大值,并在每次寫入數(shù)據(jù)時將sn增加REDO內(nèi)容長度。

  • 物理REDO層

磁盤是塊設備,InnoDB中也用Block的概念來讀寫數(shù)據(jù),一個Block的長度OS_FILE_LOG_BLOCK_SIZE等于磁盤扇區(qū)的大小512B,每次IO讀寫的最小單位都是一個Block。

  • 文件層

最終REDO會被寫入到REDO日志文件中,并且日志文件是循環(huán)寫入的

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

  • 用戶線程的操作會首先寫進log buffer
  • log buffer中的日志會順序寫入Redo邏輯日志中
  • 之后會落盤持久化存儲到磁盤上
  • 之后通知用戶已經(jīng)存儲完成了

3. Checkpoint機制

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

  • 維護Redo日志,方便清理
  • 減小重啟的工作量

數(shù)據(jù)庫恢復流程:

  • 讀取 checkpoint 信息•從 checkpoint 位置開始讀取剩余日志
  • 解析日志并按 space_no 與 page_id 構建 hash 表
  • 應用 Redo 日志,Redo日志回放保證冪等性
  • 解析 binlog 構建 xid 列表
  • 掃描回滾段構建待提交事務列表
  • 回滾掉未在 xid 列表中的事務

4. Undo日志介紹

Undo log是邏輯日志,記錄的是數(shù)據(jù)的增量變化,它的作用是保證事務的原子性和事務并發(fā)控制。可以用于事務回滾,以及提供多版本機制(MVCC),解決讀寫沖突和一致性讀的問題。

5. MVCC

MVCC的意義:

  • 讀寫互不阻塞;
  • 降低死鎖概率;
  • 實現(xiàn)一致性讀。

UndoLog在MVCC的作用:

  • 每個事務有一個單增的事務ID;
  • 數(shù)據(jù)頁的行記錄中包含了DB_ROW_ID,DB_TRX_ID,DB_ROLL_PTR;
  • DB_ROLL_PTR將數(shù)據(jù)行的所有快照記錄都通過鏈表的結構串聯(lián)了起來。

到此這篇關于MySQL Redo與Undo日志詳細解析的文章就介紹到這了,更多相關MySQL Redo與Undo 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • mysql中json類型字段的基本用法實例

    mysql中json類型字段的基本用法實例

    大家應該都知道m(xù)ysql中的字段可以使用json的格式來進行存儲,下面這篇文章主要給大家介紹了關于mysql中json類型字段的基本用法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • mysql sql語句隱藏手機號碼中間四位的方法

    mysql sql語句隱藏手機號碼中間四位的方法

    這篇文章主要為大家詳細介紹了mysql sql語句隱藏手機號碼中間四位的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • mysql 8.0.18各版本安裝及安裝中出現(xiàn)的問題(精華總結)

    mysql 8.0.18各版本安裝及安裝中出現(xiàn)的問題(精華總結)

    這篇文章主要介紹了mysql 8.0.18各版本安裝及安裝中出現(xiàn)的問題,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • 在MySQL中增添新用戶權限的方法

    在MySQL中增添新用戶權限的方法

    在MySQL中增添新用戶權限的方法...
    2007-03-03
  • MySQL count(1)、count(*)、count(字段)的區(qū)別

    MySQL count(1)、count(*)、count(字段)的區(qū)別

    COUNT在數(shù)據(jù)庫行數(shù)統(tǒng)計中被廣泛使用,那么你知道MySQL count(1)、count(*)、count(字段)的區(qū)別嗎,本文就想的介紹一下,感興趣的可以了解一下
    2021-12-12
  • MySql安裝與使用圖文教程【推薦】

    MySql安裝與使用圖文教程【推薦】

    mysql是一種關聯(lián)數(shù)據(jù)庫管理系統(tǒng),在程序開發(fā)中應用非常廣泛,下面通過本文給大家介紹mysql安裝與使用教程,感興趣的朋友一起學習吧
    2016-05-05
  • Mysql數(shù)據(jù)庫報錯2003?Can't?connect?to?MySQL?server?on?'localhost'?(10061)解決

    Mysql數(shù)據(jù)庫報錯2003?Can't?connect?to?MySQL?server?on?

    最近在用mysql,打開mysql的圖形化界面要連接時出現(xiàn)2003錯誤,所以下面這篇文章主要給大家介紹了關于Mysql數(shù)據(jù)庫報錯2003?Can't?connect?to?MySQL?server?on?'localhost'?(10061)的解決方式,需要的朋友可以參考下
    2022-09-09
  • 如何實現(xiàn)MySQL的索引

    如何實現(xiàn)MySQL的索引

    這篇文章主要介紹了如何實現(xiàn)MySQL的索引,MySQL中索引分三類,有B+樹索引、Hash索引和全文索引,下面我們一起來看看MySQL索引的具體實現(xiàn),需要的小伙伴可以參考一下
    2022-01-01
  • mysql釋放表空間的方法示例

    mysql釋放表空間的方法示例

    本文主要介紹了mysql釋放表空間的方法示例,可以使用OPTIMIZE TABLE命令,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-08-08
  • MySQL數(shù)據(jù)庫中case表達式的用法示例

    MySQL數(shù)據(jù)庫中case表達式的用法示例

    這篇文章主要介紹了MySQL數(shù)據(jù)庫中case表達式用法的相關資料,MySQL的CASE表達式用于條件判斷,返回不同結果,適用于SELECT、UPDATE和ORDERBY,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-02-02

最新評論