MVCC是什么


程序員的公眾號:源1024獲取更多資料,無加密無套路!

最近整理了一波電子書籍資料,包含《Effective Java中文版 第2版》《深入JAVA虛擬機》,《重構改善既有代碼設計》,《MySQL高性能-第3版》,《Java并發編程實戰》等等
獲取方式: 關注公眾號并回復 電子書 領取,更多內容持續奉上


MVCC(Multi-Version Concurrency Control),即多版本并發控制,是一種數據庫的并發控制機制。

MVCC是一種用來解決讀寫沖突的無鎖并發控制,到底解決了什么問題呢?

  • 在并發讀寫時,可以在讀操作時不阻塞寫操作,寫操作時也不阻塞讀操作,提高了數據庫并發讀寫的性能。

  • 解決臟讀、幻讀、不可重復讀等事務隔離問題。

MVCC原理:

主要依賴于記錄中的三個隱藏字段、undolog,read view來實現。

  • 隱藏字段

?????每行記錄都隱含DB_TRX_ID,DB_ROLL_PTR,DB_ROW_ID三個字段。

?????DB_TRX_ID:記錄創建這條記錄或者最后一次修改該記錄的事務id

?????DB_ROLL_PTR:回滾指針,指向上一個舊版本

?????DB_ROW_ID:隱藏的主鍵

  • undolog

回滾日志,在進行insert,delete,update操作的時候產生的方便回滾的日志。

  • Read View

事務進行快照讀操作時生成的讀視圖,在該事務執行快照讀的那一刻,系統會生成一個快照,記錄此時事務的id,用來做可見性判斷的,判斷當前事務能夠看到哪個版本的數據,有可能讀取到的是最新的數據,也有可能讀取到的是當前記錄的undolog中某個版本的數據。

?總結:

  1. 在MVCC中,每個數據行都會維護多個版本。每當對一行數據進行更新操作時,都會生成新的版本。每個版本都有一個時間戳,用于標識該版本的創建時間。

  2. 在讀取數據時,事務只能看到創建時間早于事務開始時間的版本。

  3. 當寫操作時,會生成新的版本并更新到數據行中。舊的版本仍然存在,不會被刪除。以便正在進行的其他事務可以繼續讀取到舊的版本,不會被阻塞。

  4. MVCC版本控制機制維護了數據的一致性和隔離性。事務開始時,會記錄當前的最新版本號。在事務執行過程中,只能讀取到小于事務開始時的版本,保證讀取的數據在事務開始時是一致的?。

?


?系列文章索引

MyBatis的插件能在哪些地方進行攔截?

了解MyBatis的緩存機制嗎

面試官:談談對volatile的理解

Spring中用到了哪些設計模式

面試官:說一下SQL的執行過程

線程池的工作原理


?

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

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

相關文章

ChibiOS簡介1/5

ChibiOS簡介1/5 1. 源由2. ChibiOS基礎知識1/52.1 Chapter 1 - Introduction2.1.1 Priciple(設計原則)2.1.2 Fundamental requirements(基本需求) 2.2 Chapter 2 - Real Time Systems Concepts2.2.1 System(系統&#…

flutter TextPainter 的用法

本文章基于 Flutter 3.16.2 Dart SDK 3.2.2。 TextPainter 是 Flutter 中用于在 Canvas 上繪制文本的類。它允許您在自定義的 CustomPainter 中使用 drawText 方法來繪制文本,并可以控制文本的位置、顏色、字體等屬性。 import package:flutter/material.dart;cla…

【NEON】學習資料匯總

一、資料鏈接 Guide : http://www.heenes.de/ro/material/arm/DEN0018A_neon_programmers_guide_en.pdf csdn博文1,基礎案例: https://blog.csdn.net/kakasxin/article/details/103912832? csdn博文2,內部函數: ht…

css 輸入框動態特效

先上圖 代碼 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>css 輸入框動效</title><style>.inputBox {position: relative;width: 250px;}.inputBox input {width: 100%;padding: 10px…

使用git push太慢怎么辦

使用git push太慢怎么辦 修改host文件&#xff1a; windows 的路徑應該在 C:\Windows\System32\drivers\etc\hosts 在host文件的最后一行加上 151.101.72.249 github.global.ssl.fastly.nethost不允許修改就復制一份&#xff0c;修改好了再替換掉&#xff0c;可能會讓你輸入…

028:簡單的foreach

028:簡單的foreach 總時間限制: 1000ms 內存限制: 65536kB 描述 編寫MyForeach模板&#xff0c;使程序按要求輸出 不得編寫 MyForeach函數 #include <iostream> #include <string> using namespace std; // 在此處補充你的代碼 void Print(string s) {cout <…

【面試經典150 | 二叉樹】對稱二叉樹

文章目錄 寫在前面Tag題目來源解題思路方法一&#xff1a;遞歸方法二&#xff1a;迭代 寫在最后 寫在前面 本專欄專注于分析與講解【面試經典150】算法&#xff0c;兩到三天更新一篇文章&#xff0c;歡迎催更…… 專欄內容以分析題目為主&#xff0c;并附帶一些對于本題涉及到的…

第6講、Hyper-V體系結構和相關管理程序文件及服務:

1、Hyper-V的體系結構 1、CPU能力在服務器虛擬化實現中扮演著一個重要角色&#xff0c;Intel/AMD型號的CPU定義了一些權限 級別&#xff0c;稱為ring。在傳統模型中&#xff0c;ring0級別最高權限最大。Windows內核和設備驅動程序 使用這個級別…

【優選算法系列】【專題一雙指針】第三節.611. 有效三角形的個數和LCR 179. 查找總價格為目標值的兩個商品

文章目錄 前言一、有效三角形的個數 1.1 題目描述 1.2 題目解析 1.2.1 算法原理 1.2.2 代碼編寫 1.2.3 題目總結二、查找總價格為目標值的兩個商品 2.1 題目描述 2.2 題目解析 2.2.1 算法原理 …

0008-【PID學習筆記 8 】控制系統的分析方法

寫在前面 前面已經完成了控制系統的性能指標學習&#xff0c;從這節開始繼續學習控制系統的分析方法&#xff0c;本文重點介紹分析方法概述和時域分析法。 一、控制系統的基本分析方法 控制系統的基本分析方法包括&#xff1a; 古典方法&#xff08;經典控制理論&#xff09;…

獨孤思維:賺錢需要獨一無二的支點,而不是技多不壓身的堆料

賺錢需要找到屬于自己獨一無二&#xff0c;且超乎常人的支點&#xff0c;而不應該一味追求大而全&#xff0c;技多不壓身的堆料。 凡是考了一堆證書&#xff0c;以為掌握多項技能&#xff0c;就能賺到錢的都是學生思維。 尤其是很多剛入職場的年輕人&#xff0c;為了職場晉升…

2024山東健博會,濟南健康展,5月中國大健康展,健康管理展

China-DJK山東健博會&#xff1a;5月黃金招商季&#xff0c;攜千家參展商、萬余款產品精彩亮相&#xff1b; DJK 2024第6屆中國&#xff08;濟南&#xff09;國際大健康產業博覽會 The 2024 sixth China (Jinan) International Big Health Industry Expo 時間&#xff1a;2024…

LLaMA-Factory微調ChatGLM3報錯: Segmentation fault (core dumped)

SFT訓練模型的命令 CUDA_VISIBLE_DEVICES0 python src/train_bash.py \--stage sft \--model_name_or_path models/chatglm3-6b \--do_train \--dataset self_cognition \--template chatglm3 \--finetuning_type lora \--lora_target query_key_value \--output_dir output/c…

Docker網絡原理

Docker網絡概述 1.橋接模式介紹 bridge模式是docker的默認網絡模式。 橋接模式是一種用于連接兩個不同網絡段的設備&#xff0c;使它們能夠共享通信的一種方式。 橋接設備工作在OSI模型的第二層&#xff0c;即數據鏈路層&#xff0c;通常基于MAC地址進行幀轉發。 物理層連接…

一個簡單的 postman設置接口關聯讓我措施了大廠的機會

postman設置接口關聯 在實際的接口測試中&#xff0c;后一個接口經常需要用到前一個接口返回的結果&#xff0c; 從而讓后一個接口能正常執行&#xff0c;這個過程的實現稱為關聯。 在postman中實現關聯操作的步驟如下&#xff1a; 1、利用postman獲取上一個接口指定的返回值…

YOLOv8 YoLov8l 模型輸出及水果識別

&#x1f368; 本文為[&#x1f517;365天深度學習訓練營學習記錄博客 &#x1f366; 參考文章&#xff1a;365天深度學習訓練營 &#x1f356; 原作者&#xff1a;[K同學啊 | 接輔導、項目定制] &#x1f680; 文章來源&#xff1a;[K同學的學習圈子](https://www.yuque.com/m…

LeetCode雙指針:有序數組中的單一元素

LeetCode雙指針&#xff1a;有序數組中的單一元素 題目描述 給你一個僅由整數組成的有序數組&#xff0c;其中每個元素都會出現兩次&#xff0c;唯有一個數只會出現一次。 請你找出并返回只出現一次的那個數。 你設計的解決方案必須滿足 O(log n) 時間復雜度和 O(1) 空間復…

關于什么是 JVM

關于什么是 JVM&#xff0c;看看普通?和??的回答。 普通人 JVM 就是 Java 虛擬機&#xff0c;是?來運?我們平時所寫的 Java 代碼的。優點是它會 ?動進?內存管理和垃圾回收&#xff0c;缺點是?旦發?問題&#xff0c;要是不了解 JVM 的運? 機制&#xff0c; 就很難…

是誰還沒玩AI擴圖?快跟上節奏啦

最近&#xff0c;抖音上的AI擴圖突然火了&#xff0c;看完真的讓人笑掉大牙&#xff5e;&#xff5e;&#xff5e; 這一熱議的話題#AI擴圖#在短視頻平臺抖音上的播放量已經突破7.8億次&#xff0c;而相關的討論也如同星火燎原&#xff0c;迅速點燃了公眾的好奇心。從“用AI擴圖…

中偉視界:皮帶跑偏、異物檢測AI算法除了礦山行業應用,還能在鋼鐵、火電、港口等行業中使用嗎?

隨著工業化的發展&#xff0c;皮帶輸送機已經成為各行業中不可或缺的重要設備&#xff0c;但是在使用過程中&#xff0c;由于各種原因&#xff0c;皮帶常常出現跑偏問題&#xff0c;給生產運營帶來了諸多困擾。不僅僅是礦山行業&#xff0c;鋼鐵、火電、港口等行業也都面臨著皮…