(Mysql)MVCC、Redo Log 與 Undo Log

1. MVCC(多版本并發控制)

概念
MVCC(Multi-Version Concurrency Control)是一種數據庫并發控制機制,用于解決 讀寫沖突,提高數據庫并發性能。MySQL InnoDB 存儲引擎使用 MVCC 來實現 非阻塞讀(即讀取時不加鎖)。

核心原理

  • 每行數據在內存中有多個版本。

  • 每個版本包含兩個隱藏列:

    • trx_id:記錄創建該版本的事務 ID。

    • roll_pointer(或 undo_pointer):指向舊版本 Undo Log。

  • 讀取數據時,事務根據 自己的快照版本 決定看到哪個版本的數據。

作用

  1. 支持 一致性讀(Consistent Read)

  2. 避免讀操作阻塞寫操作

  3. 與事務隔離級別結合使用(如 Repeatable Read)

舉例

  • 事務 A 讀取數據時看到的版本是事務開始時的快照

  • 事務 B 更新同一行數據時,會生成新版本,并在 Undo Log 中保存舊版本

  • 事務 A 仍然看到舊版本,不會被阻塞


2. Redo Log(重做日志)

概念
Redo Log 是 InnoDB 的 物理日志,用于 保證事務的持久性(Durability)

特點

  • 順序寫入磁盤,性能高

  • 數據寫入前先寫 Redo Log,再刷入數據頁(Write-Ahead Logging)

  • 崩潰恢復時,通過 Redo Log 恢復已提交事務的數據

順序流程(插入數據示例)

  1. 事務寫入 Redo Log(WAL,順序追加)

  2. 數據頁寫入緩沖池

  3. 事務提交時,Redo Log 刷盤(保證持久性)

作用

  • 崩潰恢復:只要 Redo Log 存在,已提交的數據可以恢復

  • 提高寫入性能:順序寫比隨機寫快


3. Undo Log(回滾日志)

概念
Undo Log 是 InnoDB 的 邏輯日志,用于 事務回滾MVCC 版本管理

特點

  • 每條修改操作都會記錄 Undo Log

  • 保存的是舊數據版本

  • 寫操作失敗或事務回滾時,用 Undo Log 恢復數據

作用

  1. 事務回滾:事務出錯時,可通過 Undo Log 回到操作前狀態

  2. MVCC 讀:一致性讀時,事務可通過 Undo Log 獲取舊版本數據

示例

  • 數據庫原值:A = 10

  • 事務修改:A = 20

  • Undo Log 保存舊值 A = 10

  • 事務回滾時,用 Undo Log 恢復 A = 10


4. Redo Log vs Undo Log

特性Redo LogUndo Log
類型物理日志邏輯日志
存儲位置磁盤順序寫內存 + 磁盤
用途崩潰恢復回滾、MVCC版本讀取
記錄內容新數據舊數據
持久性持久化(保證事務提交)臨時(事務回滾后可釋放)

5. 總結

  • MVCC:保證高并發下的一致性讀,靠 Undo Log 保存歷史版本

  • Redo Log:保證事務提交的持久性,順序寫入磁盤

  • Undo Log:支持事務回滾和 MVCC 版本管理

理解技巧

  • Redo Log = Ctrl+S(存儲最新修改,保證不會丟)

  • Undo Log = Ctrl+Z(保存歷史版本,可以撤回操作)

  • MVCC = 時間旅行(每個事務看到自己時間點的版本)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/95344.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/95344.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/95344.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

OpenCV-Python Tutorial : A Candy from Official Main Page(五)

4.5FAST Algorithm for Corner Detection 4.5.1FAST算法 我們已了解多種特征檢測器,其中許多效果出色。但從實時應用的角度來看,它們的速度仍不夠快。一個典型例子是計算資源有限的SLAM(同步定位與建圖)移動機器人。 為解決此問…

LINUX 91 SHELL:刪除空文件夾 計數

問題 [rootweb ~]# find -type f -exec echo "file:{}" $path; find: 遺漏“-exec”的參數 您在 /var/spool/mail/root 中有郵件[rootweb ~]# $path/root -bash: /root: 沒有那個文件或目錄 您在 /var/spool/mail/root 中有新郵件 [rootweb ~]# path/root [rootweb ~…

視頻軟解碼技術詳解:原理、應用與未來發展

視頻軟解碼的基本原理 概念解析:CPU主導的通用解碼方式 視頻軟解碼是一種完全依賴通用CPU執行解碼算法的視頻還原技術,其核心特征在于不依賴任何專用硬件模塊,而是通過軟件程序調用CPU的通用計算能力完成壓縮視頻數據的解碼過程[1][2]。與硬…

線性回歸中梯度下降與正規方程以及擬合問題與正則化

線性回歸實戰指南:從理論到實踐 目錄 線性回歸理論基礎機器學習項目開發流程波士頓房價預測實戰梯度下降與正規方程模型評估指標擬合問題與正則化總結與展望 1. 線性回歸理論基礎 1.1 什么是線性回歸? 線性回歸是一種監督學習算法,用于預…

為什么46.1k程序員都在用這個AI繪畫神器?我體驗一周后終于明白了

大家好,我是顧北,一名AI應用探索者,也是GitHub開源項目收集者。說起AI繪畫這事兒,我之前真的是又愛又恨。上個月想給朋友搞張生日賀圖,結果在Stable Diffusion WebUI里折騰了大半天。采樣步數?CFG比例&…

Java基礎第8天總結(map遍歷、Stream流)

選中一部分代碼,然后CTRLALTT,可以在外面套上while循環,try..catch之類的小案例:電影信息管理模塊:用戶可以上架、查詢、下架、下架某個主演參演的電影package Demo;import lombok.AllArgsConstructor; import lombok.Data; impor…

總線矩陣的原理

總線矩陣(Bus Matrix)是多主設備共享多從設備的智能連接與仲裁核心,本質是一個“靈活的交叉開關陣列”,用于解決多個主設備(如CPU、DMA、GPU)同時訪問多個從設備(如內存、外設、存儲芯片&#x…

硬件開發_基于Zigee組網的果園養殖監控系統

一.系統概述 果園環境監控系統功能如下: 核心控制器:以STM32為核心控制器,承擔整體的數據采集、處理及控制任務。環境參數監測:集成溫度傳感器、CO?傳感器、光照傳感器和土壤濕度傳感器,可實時采集果園內的溫度、二氧…

K8s調度核心:從Pod分配到節點優化

在 Kubernetes(K8s)中,Pod 調度是指 K8s 系統根據特定規則和策略,將 Pod 合理分配到集群中的某個節點(Node)上運行的過程。其核心目標是確保 Pod 在合適的節點上高效、穩定地運行,充分利用集群資…

Tomcat 企業級運維實戰系列(四):Tomcat 企業級監控

Tomcat 企業級運維實戰系列(四):Tomcat 企業級監控一:監控工具1)概述2)流程3)部署二:監控命令1)jps2)jstack3)jmap4)MAT 工具分析三&a…

技術干貨丨HyperMesh 新界面功能與技術升級解析

全文內容選自 Altair 區域技術交流會華東站Altair 高級技術經理 張晨《HyperWorks 2025:下一代建模可視化和二次開發平臺》演講1、引言今天我為大家介紹 HyperMesh——這個大家既熟悉又陌生的工具。說熟悉,是因為它一直是工程仿真領域的主流建模軟件&…

《IC驗證必看|隨機穩定性 / 再現性》

同一用例 A 機 pass、B 機 fail?——SystemVerilog 隨機穩定性 / 可復現性全攻略(含代碼與排查清單)你該到什么水平?(對標 20k / 25k / 30k) 20k(入門會用) 會 randomize()、$urando…

字符編碼的本質

目的 最近做一個加密方面的研究,加密之后的二進制,通過轉碼之后,再也找不回之前的二進制了。 怎么試都不行,真是非常得奇怪!!!!先說說字符編碼基礎知識 在信息技術的海洋中&#xff…

網格圖--Day03--網格圖DFS--2658. 網格圖中魚的最大數目,1034. 邊界著色,1020. 飛地的數量

網格圖–Day03–網格圖DFS–2658. 網格圖中魚的最大數目,1034. 邊界著色,1020. 飛地的數量 今天要訓練的題目類型是:【網格圖DFS】,題單來自靈艾山茶府。 適用于需要計算連通塊個數、大小的題目。 部分題目做法不止一種&#xff0…

新能源車焊接中發那科機器人保護氣省氣方法

在新能源汽車制造領域,焊接工藝是保障車身結構強度與安全性的關鍵環節,發那科焊接機器人憑借高精度與穩定性成為產線主力設備。保護氣體消耗在焊接成本中占比顯著,尋找高效省氣方法成為行業降本增效的核心需求。WGFACS節氣裝置以智能化控制技…

CornerNet2025再研究---將目標檢測問題視作關鍵點檢測與配對

CornerNet于2019年3月份提出,CW近期回顧了下這個在當時引起不少關注的目標檢測模型,它的亮點在于提出了一套新的方法論——將目標檢測轉化為對物體成對關鍵點(角點)的檢測。通過將目標物體視作成對的關鍵點,其不需要在圖像上鋪設先驗錨框(anc…

【C++】vector(2)

目錄 1. insert的實現 2. 迭代器失效 2.1 迭代器失效的兩種情況 指向已釋放的內存(物理失效) 元素移動導致迭代器指向錯誤(邏輯失效) 2.2 修改代碼 3. erase的實現 ?編輯修改代碼 4. resize的實現 5. 構造函數 5.1 默認…

機器翻譯:python庫translatepy的詳細使用(集成了多種翻譯服務)

更多內容請見: 機器翻譯修煉-專欄介紹和目錄 文章目錄 一、translatepy概述 1.1 translatepy介紹 1.1 安裝 二、基本使用 2.1 初始化 `Translator` 2.2 文本翻譯 2.3 語言檢測 2.4 獲取翻譯備選方案 2.5 單詞音標獲取 2.6 語音合成 2.7 例句查詢 2.8 拼寫檢查 三、高級功能 3.…

Spring Bean生命周期的完全指南

簡介:超越Bean——揭開Spring Bean的隱秘生活 想象一場復雜宏大的舞臺劇。作為觀眾,我們看到的是最終的演出——一個流暢運行的應用程序。但在這光鮮的幕后,隱藏著一套嚴謹細致的流程:選角(實例化Bean)、試…

網絡安全A模塊專項練習任務九解析

任務九:Linux操作系統安全配置-2任務環境說明: (Linux)系統:用戶名root,密碼1234561. 設置禁止使用最近用過的6個舊密碼,將配置文件中對應的部分截圖;編輯/etc/pam.d/system-auth文件,找到passw…