最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解Mysql中的MVCC

 更新時間:2023年09月09日 14:32:33   作者:這是一條海魚  
這篇文章主要介紹了深入理解Mysql中的MVCC,同樣的sql查詢語句在一個事務(wù)?里多次執(zhí)行查詢結(jié)果相同,就算其它事務(wù)對數(shù)據(jù)有修改也不會影響當前事務(wù)sql語句的查詢結(jié)果,?這個隔離性就是靠MVCC機制來保證的,需要的朋友可以參考下

MVCC多版本并發(fā)控制機制

同樣的sql查詢語句在一個事務(wù) 里多次執(zhí)行查詢結(jié)果相同,就算其它事務(wù)對數(shù)據(jù)有修改也不會影響當前事務(wù)sql語句的查詢結(jié)果, 這個隔離性就是靠MVCC(Multi-Version Concurrency Control)機制來保證的。

對一行數(shù)據(jù)的讀和寫兩個操作默認 是不會通過加鎖互斥來保證隔離性,避免了頻繁加鎖互斥,而在串行化隔離級別為了保證較高的隔離性是通過將所有操 作加鎖互斥來實現(xiàn)的。 Mysql在讀已提交和可重復(fù)讀隔離級別下都實現(xiàn)了MVCC機制。

MVCC的具體實現(xiàn),還需要依賴于數(shù)據(jù)庫記錄中的三個隱式字段、undo log日志、readView。

三個隱式字段如下

隱藏字段含義
db_trx_id最近修改事務(wù)id,記錄插入這條記錄或最后一次修改該記錄的事務(wù)id。
db_roll_ptr回滾指針,指向這條記錄的上一個版本,用于配合undo log,指向上一個版本。
db_row_id隱藏主鍵,如果表結(jié)構(gòu)沒有指定主鍵,將會生成該隱藏字段。
  • undo log,回滾日志,在insert、update、deletel的時候產(chǎn)生的便于數(shù)據(jù)回滾的日志。
  • 當insert的時候,產(chǎn)生的undo log日志只在回滾時需要,在事務(wù)提交后,可被立即刪除。
  • 而update、deletel的時候,產(chǎn)生的undo log日志不僅在回滾時需要,在快照讀時也需要,不會立即被刪除。

undo log日志版本鏈是指一行數(shù)據(jù)被多個事務(wù)依次修改過后,在每個事務(wù)修改完后,Mysql會保留修改前的數(shù)據(jù)undo log回滾日志,并且用兩個隱藏字段db_trx_id和db_roll_ptr把這些undo log日志串聯(lián)起來形成一個歷史記錄版本鏈

在這里插入圖片描述

不同事務(wù)或相同事務(wù)對同一條記錄進行修改,會導(dǎo)致該記錄的undolog生成一條記錄版本鏈表,鏈表的頭部是最新的舊記錄,鏈表尾部是最早的舊記錄。

版本鏈數(shù)據(jù)訪問規(guī)則 ①.trx_id==creator_trx_id?可以訪問該版本成立,說明數(shù)據(jù)是當前這個事務(wù)更改的。

②.trx_id<min_trx_id?可以訪問該版本成立,說明數(shù)據(jù)已經(jīng)提交了。

③.trx_id>max_trx_id?不可以訪問該版本成立,說明該事務(wù)是在ReadView生成后才開啟。

④.min_trx_id<=trx_id<=max_trx_id?如果trx_id不在mids中是可以訪問該版本的成立,說明數(shù)據(jù)已經(jīng)提交。

readView(讀視圖)是快照讀SQL執(zhí)行時MVCC提取數(shù)據(jù)的依據(jù),記錄并維護系統(tǒng)當前活躍的事務(wù)(未提交的)id。 Readview中包含了四個核心字段:

字段含義
m_ids當前活躍的事務(wù)ID集合
min_trx_id最小活躍事務(wù)ID
max_trx_id預(yù)分配事務(wù)D,當前最大事務(wù)D+1(因為事務(wù)D是自增的)
creator_trx_idReadView創(chuàng)建者的事務(wù)D

不同的隔離級別,生成ReadView的時機不同:

  • Read committed(讀已提交):在事務(wù)中每一次執(zhí)行快照讀時生成ReadView。
  • Repeatable Read(可重復(fù)讀) :僅在事務(wù)中第一次執(zhí)行快照讀時生成ReadView,后續(xù)復(fù)用該ReadView。

總結(jié)

MVCC機制的實現(xiàn)就是通過read-view機制與undo版本鏈比對機制,使得不同的事務(wù)會根據(jù)數(shù)據(jù)版本鏈對比規(guī)則讀取 同一條數(shù)據(jù)在版本鏈上的不同版本數(shù)據(jù)。

到此這篇關(guān)于深入理解Mysql中的MVCC的文章就介紹到這了,更多相關(guān)Mysql中的MVCC內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySql的事務(wù)使用與示例詳解

    MySql的事務(wù)使用與示例詳解

    這篇文章主要介紹了MySqld的事務(wù)用法,需要的朋友可以參考下
    2014-06-06
  • mysql 8.0.22 安裝配置方法圖文教程

    mysql 8.0.22 安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了mysql 8.0.22 安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • 深入理解MySQL事務(wù)的4種隔離級別

    深入理解MySQL事務(wù)的4種隔離級別

    本文主要介紹了MySQL事務(wù)的4種隔離級別,事務(wù)的4種隔離級別分別是讀未提交,讀已提交,可重復(fù)讀和串行化,具有一定的參考價值,感興趣的可以了解一下
    2022-04-04
  • 銀河麒麟V10安裝MySQL5.7的詳細過程

    銀河麒麟V10安裝MySQL5.7的詳細過程

    這篇文章主要介紹了銀河麒麟V10安裝MySQL5.7,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • MySQL中查詢的進階運用方法實例詳解

    MySQL中查詢的進階運用方法實例詳解

    MySQL數(shù)據(jù)庫查詢語句是數(shù)據(jù)庫操作中非常關(guān)鍵的一部分,它允許用戶從數(shù)據(jù)庫中檢索數(shù)據(jù),下面這篇文章主要介紹了MySQL中查詢進階運用的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2026-04-04
  • 關(guān)于k8s環(huán)境部署mysql主從的問題

    關(guān)于k8s環(huán)境部署mysql主從的問題

    這篇文章主要介紹了k8s環(huán)境部署mysql主從的問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • MySQL常用的查看命令速查表(附詳細代碼)

    MySQL常用的查看命令速查表(附詳細代碼)

    在MySQL數(shù)據(jù)庫中,查詢數(shù)據(jù)是數(shù)據(jù)庫操作中最為基礎(chǔ)和頻繁的任務(wù)之一,這篇文章主要介紹了MySQL常用的查看命令速查表,文中通過代碼以及表格介紹的非常詳細,需要的朋友可以參考下
    2026-03-03
  • mysql表的清空、刪除和修改操作詳解

    mysql表的清空、刪除和修改操作詳解

    這篇文章主要詳細介紹了mysql表的清空、刪除和修改操作的方法,以及一些常用的mysql的常用操作,非常的簡單實用,有需要的可以參考下
    2014-09-09
  • windows環(huán)境下mysql數(shù)據(jù)庫的主從同步備份步驟(單向同步)

    windows環(huán)境下mysql數(shù)據(jù)庫的主從同步備份步驟(單向同步)

    本文主要是向大家描述的是在windows環(huán)境之下實現(xiàn)MySQL數(shù)據(jù)庫的主從同步備份的正確操作方案,以下就是文章的詳細內(nèi)容描述
    2011-05-05
  • mysql二進制日志文件恢復(fù)數(shù)據(jù)庫

    mysql二進制日志文件恢復(fù)數(shù)據(jù)庫

    喜歡的在服務(wù)器或者數(shù)據(jù)庫上直接操作的兄弟們你值得收藏下!不然你就悲劇了。-----(當然我也是在網(wǎng)上搜索的資料!不過自己測試通過了的!)
    2014-08-08

最新評論

黄浦区| 红原县| 靖远县| 宁安市| 垫江县| 虞城县| 会同县| 满洲里市| 卢湾区| 平远县| 海淀区| 天峨县| 乌拉特后旗| 郎溪县| 台北县| 广灵县| 虹口区| 贵溪市| 兴宁市| 井研县| 阿鲁科尔沁旗| 永胜县| 共和县| 安庆市| 茶陵县| 南华县| 宝鸡市| 昌宁县| 钟山县| 三门县| 乌审旗| 美姑县| 原阳县| 乐业县| 靖江市| 廊坊市| 玉树县| 库伦旗| 上犹县| 洛川县| 黑河市|