国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

mysql數(shù)據(jù)庫 mvcc

這篇具有很好參考價值的文章主要介紹了mysql數(shù)據(jù)庫 mvcc。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?在看MVCC之前我們先補充些基礎(chǔ)內(nèi)容,首先來看下事務(wù)的ACID和數(shù)據(jù)的總體運行流程

??數(shù)據(jù)庫整體的使用流程:

mysql數(shù)據(jù)庫 mvcc,數(shù)據(jù)庫,數(shù)據(jù)庫,mysql,面試

ACID流程圖?

mysql數(shù)據(jù)庫 mvcc,數(shù)據(jù)庫,數(shù)據(jù)庫,mysql,面試

mysql核心日志:

在MySQL數(shù)據(jù)庫中有三個非常重要的日志binlog,undolog,redolog.

mysql數(shù)據(jù)庫 mvcc,數(shù)據(jù)庫,數(shù)據(jù)庫,mysql,面試

mvcc概念介紹:

MVCC(Multi-Version Concurrency Control):多版本并發(fā)控制,是一種并發(fā)控制的方法,一般在數(shù)據(jù)庫管理系統(tǒng)中,實現(xiàn)對數(shù)據(jù)庫的并發(fā)訪問,在編程語言中實現(xiàn)事務(wù)內(nèi)存。 MVCC 在 MySQL InnoDB 中的實現(xiàn)主要是為了提高數(shù)據(jù)庫并發(fā)性能,用更好的方式去處理讀-寫沖突,做到即使有讀寫沖突時,也能做到不加鎖,非阻塞并發(fā)讀。

當前讀和快照讀的概念:

當前讀(Current Read)指的是讀取數(shù)據(jù)當前最新數(shù)據(jù)。這種讀取方式需要保證其他并發(fā)事務(wù)不能修改當前記錄,因此會對讀取的記錄進行加鎖。在執(zhí)行當前讀操作時,用戶可以訪問數(shù)據(jù)庫中最新的數(shù)據(jù)狀態(tài),包括最近提交的事務(wù)所做的修改。這種讀取方式具有實時數(shù)據(jù)可見性,因為它讀取的是已提交的最新數(shù)據(jù)。加鎖的SELECT操作,或者對數(shù)據(jù)進行增刪改都會進行當前讀。

快照讀(Snapshot Read)則是指在讀取數(shù)據(jù)時,生成讀取快照,并在同一個事務(wù)中可能會一直讀取此快照的數(shù)據(jù)。快照讀讀到的數(shù)據(jù)可能不是最新的,而是歷史版本的數(shù)據(jù)。這些歷史版本的數(shù)據(jù)可以從undo log中獲取。在事務(wù)中的SELECT不加鎖的情況下,會執(zhí)行快照讀。快照讀依賴readview來實現(xiàn)。需要注意的是,快照讀的前提是隔離級別不是串行級別,因為在串行級別下的快照讀會退化成當前讀。

總的來說,當前讀和快照讀的主要區(qū)別在于它們讀取數(shù)據(jù)的方式和時間點。當前讀總是讀取最新的已提交數(shù)據(jù),而快照讀則可能讀取歷史版本的數(shù)據(jù)。這兩種讀取方式在數(shù)據(jù)庫操作中各有其應(yīng)用場景和優(yōu)勢。

mysql數(shù)據(jù)庫 mvcc,數(shù)據(jù)庫,數(shù)據(jù)庫,mysql,面試

他們相互之間的聯(lián)系:

  1. MVCC與快照讀
    • 快照讀是MVCC的一個實現(xiàn)方式。當執(zhí)行快照讀時,數(shù)據(jù)庫會提供一個數(shù)據(jù)的一致性快照,而不是當前最新的數(shù)據(jù)。這個快照是基于某個時間點的數(shù)據(jù)版本,可能不是最新的。
    • 由于快照讀是基于多版本的,因此它不需要對讀取的數(shù)據(jù)加鎖,從而實現(xiàn)了非阻塞的讀取操作。
    • 在MySQL的InnoDB存儲引擎中,快照讀是通過read view機制來實現(xiàn)的。read view記錄了某個時間點的系統(tǒng)活躍事務(wù)列表,并根據(jù)這個列表來判斷哪些數(shù)據(jù)版本對當前事務(wù)是可見的。
  2. MVCC與當前讀
    • 當前讀是讀取數(shù)據(jù)的最新版本,并且在讀取時會加鎖,以確保其他并發(fā)事務(wù)不能修改當前記錄。
    • 在MVCC的上下文中,當前讀會讀取最新的數(shù)據(jù)版本,這個版本是與當前事務(wù)ID相關(guān)聯(lián)的。
    • 當前讀通常發(fā)生在執(zhí)行SELECT ... FOR UPDATEUPDATE、DELETE等操作時,這些操作需要確保讀取的數(shù)據(jù)在事務(wù)處理期間不會被其他事務(wù)修改。

代碼實例:
1.創(chuàng)建表

CREATE TABLE example (  
    id INT PRIMARY KEY,  
    value INT  
);  
  
INSERT INTO example (id, value) VALUES (1, 100);  
INSERT INTO example (id, value) VALUES (2, 200);

事務(wù)A(當前讀):

START TRANSACTION;  
SELECT * FROM example WHERE id = 1 FOR UPDATE; -- 當前讀,會加鎖

?事務(wù)B(快照讀):

START TRANSACTION;  
SELECT * FROM example WHERE id = 1; -- 快照讀,不會加鎖,讀取的是事務(wù)開始時的數(shù)據(jù)版本

?事務(wù)A修改數(shù)據(jù):

UPDATE example SET value = 150 WHERE id = 1; -- 事務(wù)A修改數(shù)據(jù)

事務(wù)B修改數(shù)據(jù):

START TRANSACTION;  
SELECT * FROM example WHERE id = 1 FOR UPDATE; -- 事務(wù)B的當前讀

?

好了 本篇文章就到這里 在這里我向大家推薦一個性價比很高課程:

https://xxetb.xetslk.com/s/2PjJ3T文章來源地址http://www.zghlxwxcb.cn/news/detail-829713.html

到了這里,關(guān)于mysql數(shù)據(jù)庫 mvcc的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 面試八股文Mysql:(2)數(shù)據(jù)庫調(diào)優(yōu)

    面試八股文Mysql:(2)數(shù)據(jù)庫調(diào)優(yōu)

    數(shù)據(jù)庫優(yōu)化在提升系統(tǒng)性能是很重要的一個方面,不管是MySQL還是MongoDB還是其它的數(shù)據(jù)庫。 SQL優(yōu)化在提升系統(tǒng)性能中是成本最低 優(yōu)化效果最明顯的途徑,可以讓 吞吐量更大,響應(yīng)速度更快 。如果你的團隊在SQL優(yōu)化這方面搞得很優(yōu)秀,對你們整個大型系統(tǒng)可用性方面無疑是一

    2024年02月13日
    瀏覽(29)
  • 深入解析MVCC:多版本并發(fā)控制的數(shù)據(jù)庫之道

    目錄 引言 一、什么是MVCC? 二、MVCC的實現(xiàn)原理 2.1版本號 2.1.1版本號的作用: 2.1.2版本號的組成: 2.1.3.示例 2.2事務(wù)id 2.2.1事務(wù)ID的作用: 2.2.2事務(wù)ID的生成: 2.2.3示例: 2.3 快照(Snapshot) 2.3.1快照的作用: 2.3.2快照的實現(xiàn)方式: 2.3.3示例: 2.4版本鏈(Version Chain) 2.4.1版本鏈

    2024年01月24日
    瀏覽(28)
  • java八股文面試[數(shù)據(jù)庫]——MySQL索引的數(shù)據(jù)結(jié)構(gòu)

    java八股文面試[數(shù)據(jù)庫]——MySQL索引的數(shù)據(jù)結(jié)構(gòu)

    知識點: 【2023年面試】mysql索引的基本原理_嗶哩嗶哩_bilibili 【2023年面試】mysql索引結(jié)構(gòu)有哪些,各自的優(yōu)劣是什么_嗶哩嗶哩_bilibili

    2024年02月10日
    瀏覽(90)
  • mysql數(shù)據(jù)庫面試題基礎(chǔ)知識,Hadoop之MapReduce04,騰訊java面試流程

    mysql數(shù)據(jù)庫面試題基礎(chǔ)知識,Hadoop之MapReduce04,騰訊java面試流程

    該方法的執(zhí)行過程比較復(fù)雜,我們慢慢來分析,首先來看下簡化的時序圖 3.1waitForCompletion public boolean waitForCompletion(boolean verbose ) throws IOException, InterruptedException, ClassNotFoundException { // 判斷任務(wù)的狀態(tài),如果是DEFINE就提交 if (state == JobState.DEFINE) { submit(); } if (verbose) { // 監(jiān)聽并且

    2024年04月14日
    瀏覽(33)
  • java八股文面試[數(shù)據(jù)庫]——MySQL死鎖的原因和處理方法

    java八股文面試[數(shù)據(jù)庫]——MySQL死鎖的原因和處理方法

    1) 表的死鎖 產(chǎn)生原因 : 用戶A訪問表A(鎖住了表A),然后 又訪問表B ;另一個用戶B訪問表B(鎖住了表B),然后企圖 訪問表A ;這時用戶A由于用戶B已經(jīng)鎖住表B,它必須等待用戶B釋放表B才能繼續(xù),同樣用戶B要等用戶A釋放表A才能繼續(xù),這就死鎖就產(chǎn)生了。 用戶A--》A表(表

    2024年02月09日
    瀏覽(28)
  • mysql面試題30:什么是數(shù)據(jù)庫連接池、應(yīng)用程序和數(shù)據(jù)庫建立連接的過程、為什么需要數(shù)據(jù)庫連接池、你知道哪些數(shù)據(jù)庫連接池

    mysql面試題30:什么是數(shù)據(jù)庫連接池、應(yīng)用程序和數(shù)據(jù)庫建立連接的過程、為什么需要數(shù)據(jù)庫連接池、你知道哪些數(shù)據(jù)庫連接池

    該文章專注于面試,面試只要回答關(guān)鍵點即可,不需要對框架有非常深入的回答,如果你想應(yīng)付面試,是足夠了,抓住關(guān)鍵點 數(shù)據(jù)庫連接池是一種用于管理和復(fù)用數(shù)據(jù)庫連接的技術(shù)。它是在應(yīng)用程序和數(shù)據(jù)庫之間建立一組數(shù)據(jù)庫連接,并以池的形式存儲起來,每當應(yīng)用程序需

    2024年02月07日
    瀏覽(31)
  • 從小白到數(shù)據(jù)庫達人!Mysql優(yōu)化讓你的社招面試無往不利!

    從小白到數(shù)據(jù)庫達人!Mysql優(yōu)化讓你的社招面試無往不利!

    大家好,我是小米,在這個美好的時刻又迎來了我們的技術(shù)小窩。今天,我們要聊一聊一個在數(shù)據(jù)庫領(lǐng)域中無比重要的話題 —— Mysql 優(yōu)化 !是不是感覺很興奮呢?廢話不多說,讓我們直接進入今天的主題。 首先,我們要了解一下 Mysql 到底是什么。 Mysql 是一個開源的關(guān)系型

    2024年02月14日
    瀏覽(19)
  • 面試之MySQL中的mvcc

    面試之MySQL中的mvcc

    ?首先需要知道什么是 MVCC? MVCC 多版本并發(fā)控制。MVCC就是通過數(shù)據(jù)行的多個版本管理來實現(xiàn)數(shù)據(jù)庫的并發(fā)控制。這項技術(shù)是的InnoDB的事務(wù)隔離級別下執(zhí)行一致性讀 有了保證。換言之,就是為了查詢一些正在被一個事務(wù)更新的行。并且可以看到他們被更新之前的值。查詢在做查

    2024年02月16日
    瀏覽(19)
  • java八股文面試[數(shù)據(jù)庫]——數(shù)據(jù)庫三范式

    java八股文面試[數(shù)據(jù)庫]——數(shù)據(jù)庫三范式

    什么是范式? 范式是數(shù)據(jù)庫設(shè)計時遵循的 一種規(guī)范 ,不同的規(guī)范要求遵循不同的范式。 最常用的三大范式 第一范式(1NF): 屬性不可分割 ,即每個屬性都是不可分割的原子項。(實體的屬性即表中的列) 理解:一個列不能包含兩個數(shù)據(jù) 第二范式(2NF):滿足第一范式;且不存在

    2024年02月10日
    瀏覽(20)
  • 數(shù)據(jù)庫面試題整理

    數(shù)據(jù)庫面試題整理

    MySQL支持 4 種事務(wù)隔離級別,這些隔離級別定義了事務(wù)之間的可見性和并發(fā)控制方式。 READ UNCOMMITTED(讀未提交) :這是最低的隔離級別。在該級別下,事務(wù)可以讀取未提交事務(wù)的數(shù)據(jù),可能會導致臟讀、不可重復(fù)讀和幻像讀問題。一般情況下不建議使用此級別。 READ COMMITT

    2024年02月06日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包