MVCC 怎么實現的

? 什么是 MVCC?它是怎么實現的?(適合基礎不牢固者)


一、MVCC 是什么?

MVCC 全稱是:Multi-Version Concurrency Control,中文叫:多版本并發控制

主要用于解決數據庫的讀寫并發沖突問題,它的作用是讓讀操作無需加鎖,也能讀到符合事務隔離要求的數據版本

你可以理解成:

??「數據庫里的一行數據,可能同時有多個版本,讀操作可以看到一個舊版本,寫操作操作一個新版本,從而實現讀寫不沖突。」


二、為什么要有 MVCC?

我們先想一個問題:

多個線程同時讀寫數據,如果每次都加鎖,會不會很慢?

是的!所以:

  • ? 為了讓“讀”不加鎖、快速返回

  • ? 為了讓“寫”不影響“讀”
    ?? 引入了 MVCC 技術!


三、MVCC 是如何實現的?(以 MySQL InnoDB 為例)

InnoDB 使用 MVCC 實現了“事務隔離”中的:讀已提交(Read Committed)和可重復讀(Repeatable Read)。

實現的關鍵:隱藏字段 + undo log + 事務ID


?? 每行記錄背后都有兩個隱藏的版本號字段:

字段名說明
trx_id當前修改這行記錄的事務ID(記錄這個版本是誰改的)
roll_pointer指向 undo log(回滾日志)的指針,可以找到舊版本的值

?? 舉個真實場景:

假設數據庫里有這樣一行記錄:

id = 1, name = "Alice", trx_id = 100

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

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

相關文章

深度解析企業風控API技術實踐:構建全方位企業風險畫像系統

引言 在當前的商業環境中,企業風險評估已成為各類商業決策的重要依據。本文將從技術實踐的角度,詳細介紹企業風控API的集成應用,重點關注API的調用方式、數據結構以及風險維度的劃分,幫助開發者快速構建企業風險畫像系統。 關鍵…

Mac 系統 Node.js 安裝與版本管理指南

Mac 系統 Node.js 安裝與版本管理指南 一、環境檢查 在終端執行以下命令驗證當前環境: node -v # 查看 Node.js 版本(未安裝會提示命令不存在) npm -v # 查看 npm 版本(需 Node.js 安裝完成后生效)二、安裝方法 …

設備健康管理系統搭建全技術解析:從架構設計到智能運維實踐

在工業 4.0 與智能制造深度融合的當下,設備健康管理系統已成為企業實現數字化轉型的核心基礎設施。據 Gartner 數據顯示,采用智能設備健康管理系統的企業,平均可降低 30% 的非計劃停機成本。如何基于現代技術棧構建一套高效、精準的設備健康管…

React-router 路由歷史的模式和原理

在現代Web開發中,React Router已成為管理React應用程序中路由的流行工具。它不僅簡化了在單頁應用程序(SPA)中導航的過程,還提供了多種路由歷史的模式來適應不同的開發需求和環境。了解這些模式及其背后的原理對于構建高效、可維護的Web應用程序至關重要。本文將深入探討Re…

C++題解(35) 2025年順德區中小學生程序設計展示活動(初中組C++) 換位(一)

題目描述 小明班上是n行m列的座位排列,座位按照行列順序編號,如6行7列,那么第1行第1列座位號為1號、第1行第7列為7號、第3行第4列為18號,如此遞推。 現在期中考剛結束要進行全班換座位。班主任剛剛公布了換位指令,指…

征程 6 Cache 使用場景

一、緩存機制基礎 1.1 緩存類型對比 1.2 典型應用場景 緩存緩沖區 :適用于高頻 CPU 訪問場景(如 AI 推理中間數據) 非緩存緩沖區 :適用于設備直傳場景(如 DMA 數據流) 二、數據一致性問題深度解析 2.1…

山東大學軟件學院項目實訓-基于大模型的模擬面試系統-個人博客(十)

開發博客:AI面試官個性化出題MCP功能最終完善 本周作為項目開發的最后沖刺階段,我們致力于進一步增強AI面試官在個性化題目生成方面的能力。核心工作是新增和優化了一系列MCP(Multi-turn Conversation Protocol)工具,…

Rabbitmq后臺無法登錄問題解決

rabbitmq pod正常運行,查看pod日志也沒有發現異常報錯。 我們進入容器查看插件是否正常啟用: $ kubectl exec -it rabbitmq-hitch-0 -n rabbitmq -- rabbitmq-plugins list Listing plugins with pattern ".*" ...Configured: E explicitly…

期權入門介紹

文章目錄 1.基本概念2.期權損益圖買入看漲期權賣出看漲期權買入看跌期權賣出看跌期權 3.買賣邏輯3.1 買賣邏輯買入看漲期權賣出看漲期權買入看跌期權賣出看跌期權 3.2 決策依據 4.行權方式美式期權 (American Style)歐式期權 (European Style)百慕大期權 (Bermudan Style)關鍵區…

useMemo vs useCallback:React 性能優化的兩大利器

文章目錄 什么是 useMemo?基本語法使用場景實際例子 什么是 useCallback?基本語法使用場景實際例子 核心區別對比什么時候使用它們?使用 useMemo 的時機使用 useCallback 的時機 常見誤區和注意事項誤區 1:過度使用誤區 2&#xf…

C++ 記錄

1. 字符串查找字符 bool findMap(char ch){string mapper "aeiouAEIOU";return mapper.find(ch) ! string::npos;} 2.substr函數 string substr(size_t pos 0, size_t len npos) const; 3.to_string && stoi 函數 iota 填充一個范圍&#xff0…

樸樸超市小程序 sign-v2 分析

聲明 本文章中所有內容僅供學習交流使用,不用于其他任何目的,抓包內容、敏感網址、數據接口等均已做脫敏處理,嚴禁用于商業用途和非法用途,否則由此產生的一切后果均與作者無關! 部分python代碼 cp execjs.compile(…

Azure 機器學習初學者指南

Azure 機器學習初學者指南 在我們的初學者指南中探索Azure機器學習,了解如何設置、部署模型以及在Azure生態系統中使用AutoML & ML Studio。Azure 機器學習 (Azure ML) 是一項全面的云服務,專為機器學習項目生命周期而設計&am…

HTML 從入門到起飛 · 系列合集:一站式學習不掉線

一、💻計算機基礎 🌟艾倫麥席森圖靈🌟 ?? 二戰時期,破譯了德軍的戰爭編碼——英格瑪。 🕊? 讓二戰提前2年結束,拯救了上千萬人的生命。 🏆 設立圖靈獎,被后人譽為:&qu…

NodeJS的yarn和npm作用和區別,為什么建議用yarn

一、yarn和npm作用和區別 yarn異步執行安卓,npm同步執行安裝 yarn會復用,已經安裝的不會再次安裝。不過新版npm已經解決了。 Yarn安裝信息干凈一點,npm會羅列包信息 下面是關于 Node.js 中 npm 和 yarn 的完整對比與說明,幫你…

青少年編程與數學 01-011 系統軟件簡介 19 SSMS 數據庫管理工具

青少年編程與數學 01-011 系統軟件簡介 19 SSMS 數據庫管理工具 一、歷史發展二、技術特色三、主要功能四、應用場景五、產品版本六、使用方法七、市場地位八、發展前景全文總結 **摘要:**SSMS 是微軟開發的數據庫管理工具,首次引入于 SQL Server 2005&a…

React配置別名路徑完整指南

文章目錄 什么是別名路徑配置方法1. Create React App 項目方法一:使用jsconfig.json(推薦)方法二:使用CRACO(React App Rewired的替代方案) 2. Vite 項目修改vite.config.js配置TypeScript支持 3. Next.js…

本周大模型新動向:自主機器學習、狀態機推理、上下文壓縮

點擊藍字 關注我們 AI TIME歡迎每一位AI愛好者的加入! 01 Sentinel: Attention Probing of Proxy Models for LLM Context Compression with an Understanding Perspective 檢索增強型生成(RAG)通過外部上下文增強了大型語言模型(…

從零開始掌握 Docker:核心命令與實踐指南

從零開始掌握 Docker:核心命令與實踐指南 摘要: 本文系統整理了 Docker 的核心概念與常用命令,涵蓋鏡像管理、容器操作、數據存儲、網絡配置、Compose 編排以及 Dockerfile 構建等內容。通過清晰的命令示例和實用說明,幫助開發者…

RDMA簡介7之RoCE v2可靠傳輸

可靠傳輸技術旨在通過多種方法確保數據包在傳輸過程中不會丟失或損壞,同時保證數據包按發送順序到達接收端,其要求在鏈路發生丟包或網絡發生擁塞等情況下能夠完全保證數據包的正確性同時盡可能地提高傳輸速率。RoCE v2協議實現可靠傳輸的技術手段共有三種…