搜尋
首頁資料庫mysql教程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日誌介紹

    The Undo log is a logical log that records the incremental changes of data, and its function is to ensure the atomicity of transactions and transaction concurrency control. Rewritten: The Undo log serves to guarantee the atomicity of transactions and control their concurrency by logging the incremental changes in data, functioning as a logical log.。它可以用於回滾事務,實現多版本控制(MVCC),並解決讀寫衝突和一致性讀取的問題。

    5. MVCC

    MVCC的意義:

    • 讀寫互不阻塞;

    • 降低死鎖機率;

    • 實作一致性讀取。

    UndoLog在MVCC中的作用:

    • #每個交易都有一個單增的交易ID;

    • 資料頁的行記錄包含了DB_ROW_ID,DB_TRX_ID,DB_ROLL_PTR;

    • ##DB_ROLL_PTR將資料行的所有快照記錄都透過鍊錶的結構串連了起來。
    • #

    以上是MySQL Redo與Undo日誌是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述
    本文轉載於:亿速云。如有侵權,請聯絡admin@php.cn刪除
    在MySQL中使用視圖的局限性是什麼?在MySQL中使用視圖的局限性是什麼?May 14, 2025 am 12:10 AM

    mysqlviewshavelimitations:1)他們不使用Supportallsqloperations,限制DatamanipulationThroughViewSwithJoinsOrsubqueries.2)他們canimpactperformance,尤其是withcomplexcomplexclexeriesorlargedatasets.3)

    確保您的MySQL數據庫:添加用戶並授予特權確保您的MySQL數據庫:添加用戶並授予特權May 14, 2025 am 12:09 AM

    porthusermanagementinmysqliscialforenhancingsEcurityAndsingsmenting效率databaseoperation.1)usecReateusertoAddusers,指定connectionsourcewith@'localhost'or@'%'。

    哪些因素會影響我可以在MySQL中使用的觸發器數量?哪些因素會影響我可以在MySQL中使用的觸發器數量?May 14, 2025 am 12:08 AM

    mysqldoes notimposeahardlimitontriggers,butacticalfactorsdeterminetheireffactective:1)serverConfiguration impactactStriggerGermanagement; 2)複雜的TriggerSincreaseSySystemsystem load; 3)largertablesslowtriggerperfermance; 4)highConconcConcrencerCancancancancanceTigrignecentign; 5); 5)

    mysql:存儲斑點安全嗎?mysql:存儲斑點安全嗎?May 14, 2025 am 12:07 AM

    Yes,it'ssafetostoreBLOBdatainMySQL,butconsiderthesefactors:1)StorageSpace:BLOBscanconsumesignificantspace,potentiallyincreasingcostsandslowingperformance.2)Performance:LargerrowsizesduetoBLOBsmayslowdownqueries.3)BackupandRecovery:Theseprocessescanbe

    mySQL:通過PHP Web界面添加用戶mySQL:通過PHP Web界面添加用戶May 14, 2025 am 12:04 AM

    通過PHP網頁界面添加MySQL用戶可以使用MySQLi擴展。步驟如下:1.連接MySQL數據庫,使用MySQLi擴展。 2.創建用戶,使用CREATEUSER語句,並使用PASSWORD()函數加密密碼。 3.防止SQL注入,使用mysqli_real_escape_string()函數處理用戶輸入。 4.為新用戶分配權限,使用GRANT語句。

    mysql:blob和其他無-SQL存儲,有什麼區別?mysql:blob和其他無-SQL存儲,有什麼區別?May 13, 2025 am 12:14 AM

    mysql'sblobissuitableForStoringBinaryDataWithInareLationalDatabase,而ilenosqloptionslikemongodb,redis和calablesolutionsolutionsolutionsoluntionsoluntionsolundortionsolunsonstructureddata.blobobobissimplobisslowdeperformberbutslowderformandperformancewithlararengedata;

    mySQL添加用戶:語法,選項和安全性最佳實踐mySQL添加用戶:語法,選項和安全性最佳實踐May 13, 2025 am 12:12 AM

    toaddauserinmysql,使用:createUser'username'@'host'Indessify'password'; there'showtodoitsecurely:1)choosethehostcarecarefullytocon trolaccess.2)setResourcelimitswithoptionslikemax_queries_per_hour.3)usestrong,iniquepasswords.4)Enforcessl/tlsconnectionswith

    MySQL:如何避免字符串數據類型常見錯誤?MySQL:如何避免字符串數據類型常見錯誤?May 13, 2025 am 12:09 AM

    toAvoidCommonMistakeswithStringDatatatPesInMysQl,CloseStringTypenuances,chosethirtightType,andManageEngencodingAndCollat​​ionsEttingSefectery.1)usecharforfixed lengengtrings,varchar forvariable-varchar forbariaible length,andtext/blobforlargerdataa.2 seterters seterters seterters

    See all articles

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    Video Face Swap

    Video Face Swap

    使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

    熱門文章

    熱工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    MantisBT

    MantisBT

    Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    ZendStudio 13.5.1 Mac

    ZendStudio 13.5.1 Mac

    強大的PHP整合開發環境

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用