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

⑩⑧【MySQL】InnoDB架構(gòu)、事務(wù)原理、MVCC多版本并發(fā)控制

這篇具有很好參考價值的文章主要介紹了⑩⑧【MySQL】InnoDB架構(gòu)、事務(wù)原理、MVCC多版本并發(fā)控制。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

⑩⑧【MySQL】InnoDB架構(gòu)、事務(wù)原理、MVCC多版本并發(fā)控制,SQL,拿來即用。,mysql,架構(gòu),數(shù)據(jù)庫,MVCC,事務(wù),并發(fā)

個人簡介:Java領(lǐng)域新星創(chuàng)作者;阿里云技術(shù)博主、星級博主、專家博主;正在Java學(xué)習(xí)的路上摸爬滾打,記錄學(xué)習(xí)的過程~
個人主頁:.29.的博客
學(xué)習(xí)社區(qū):進去逛一逛~

⑩⑧【MySQL】InnoDB架構(gòu)、事務(wù)原理、MVCC多版本并發(fā)控制,SQL,拿來即用。,mysql,架構(gòu),數(shù)據(jù)庫,MVCC,事務(wù),并發(fā)


⑩⑧【MySQL】詳解InnoDB存儲引擎

1. InnoDB邏輯存儲結(jié)構(gòu)

InnoDB邏輯存儲結(jié)構(gòu)

  • ??表空間(idb文件):一個MySQL實例可以對應(yīng)多個表空間,用于存儲記錄、索引等數(shù)據(jù)。

  • ??:分為數(shù)據(jù)段(Leaf node segment) 、索引段(Non-leaf node segment) 、回滾段(Rollback segment) ,InnoDB是索引組織表,數(shù)據(jù)段就是B+樹的葉子節(jié)點,索引段即為B+樹的非葉子節(jié)點。段用來管理多個Extent(區(qū))

  • ??區(qū):表空間的單元結(jié)構(gòu),每個區(qū)的大小為1M。默認(rèn)情況下,InnoDB存儲引擎頁大小為16K,即一個區(qū)中一共有64個連續(xù)的頁。

  • ??:是InnoDB存儲引擎磁盤管理的最小單元,每個頁的大小默認(rèn)為16KB。為了保證頁的連續(xù)性,InnoDB存儲引擎每次從磁盤申請4-5個區(qū)。

  • ??:InnoDB存儲引擎數(shù)據(jù)是按行進行存放的。

    • ?Trx_id:每次對某條記錄進行改動時,都會把對應(yīng)的事務(wù)id賦值給Trx_id隱藏列。
    • ?Roll pointer:每次對某條引記錄進行改動時,都會把舊的版本寫入到undo日志中,然后這個隱藏列就相當(dāng)于一個指針,可以通過它來找到該記錄修改前的信息。

⑩⑧【MySQL】InnoDB架構(gòu)、事務(wù)原理、MVCC多版本并發(fā)控制,SQL,拿來即用。,mysql,架構(gòu),數(shù)據(jù)庫,MVCC,事務(wù),并發(fā)




2. InnoDB架構(gòu)

架構(gòu)

MySQL5.5版本開始,默認(rèn)使用InnoDB存儲引擎,它擅長事務(wù)處理,具有崩潰恢復(fù)特性,在日常開發(fā)中使用非常廣泛。下面是InnoDB架構(gòu)圖,左側(cè)為內(nèi)存結(jié)構(gòu),右側(cè)為磁盤結(jié)構(gòu)。

⑩⑧【MySQL】InnoDB架構(gòu)、事務(wù)原理、MVCC多版本并發(fā)控制,SQL,拿來即用。,mysql,架構(gòu),數(shù)據(jù)庫,MVCC,事務(wù),并發(fā)



??內(nèi)存架構(gòu)

內(nèi)存結(jié)構(gòu) - In-Memory Structures

  • ??Buffer Poll緩沖池 是主內(nèi)存中的一個區(qū)域,里面可以緩存磁盤上經(jīng)常操作的真實數(shù)據(jù),在執(zhí)行增刪改查操作時,先操作緩沖池中的數(shù)據(jù)(若緩沖池沒有數(shù)據(jù),則從磁盤加載并緩存),然后再以一定頻率刷新到磁盤,從而減少磁盤IO,加快處理速度。
    • 緩沖池以Page頁 為單位,底層采用鏈表數(shù)據(jù)結(jié)構(gòu)管理Page 。根據(jù)狀態(tài),將Page分為三種類型:
      • ?free page —— 空閑page,未被使用。
      • ?clean page —— 被使用page,數(shù)據(jù)沒有被修改過。
      • ?dirty page —— 臟頁,被使用page,數(shù)據(jù)被修改過,頁中數(shù)據(jù)與磁盤的數(shù)據(jù)產(chǎn)生了不一致。



  • ??Change Buffer更改緩沖區(qū)(針對于非唯一二級索引頁) ,在執(zhí)行DML語句時,如果這些數(shù)據(jù)Page
    沒有在Buffer Pool中,不會直接操作磁盤,而會將數(shù)據(jù)變更存放在更改緩沖區(qū)Change Buffer中,在未
    來數(shù)據(jù)被讀取時,再將數(shù)據(jù)合并恢復(fù)到Buffer Pool中,再將合并后的數(shù)據(jù)刷新到磁盤中。
  • 更改緩沖區(qū)Change Buffer的意義是什么?
    • 與聚集索引不同,二級索引通常是非唯一的,并且以相對隨機的順序插入二級索引。同樣,刪除和更新可能會影響索引樹中不相鄰的二級索引頁,如果每一次都操作磁盤,會造成大量的磁盤IO。有了ChangeBuffer之后,我們可以在緩沖池中進行合并處理,減少磁盤IO。



  • ??Adaptive Hash Index自適應(yīng)hash索引 ,用于優(yōu)化對Buffer Pool數(shù)據(jù)的查詢。InnoDB存儲引擎會監(jiān)控對表上各索引頁的查詢,如果觀察到hash索引可以提升速度,則建立hash索引,稱之為自適應(yīng)hash索引。自適應(yīng)哈希索引,無需人工干預(yù),是系統(tǒng)根據(jù)情況自動完成。

    • -- innodb中,自適應(yīng)hash索引的參數(shù):innodb_adaptive_hash_index
      -- 查看是否開啟了 自適應(yīng)hash
      SHOW VARIABLES LIKE 'innodb_adaptive_hash_index';
      



  • ??Log Buffer日志緩沖區(qū),用來保存要寫入到磁盤中的log日志數(shù)據(jù)(redo log、undo log),默認(rèn)大小為16MB ,日志緩沖區(qū)的日志會定期刷新到磁盤中。如果需要更新、插入或刪除許多行的事務(wù),增加日志緩沖區(qū)的大小可以節(jié)省磁盤I/O。

    • #參數(shù)
      -- 緩沖區(qū)大?。篿nnodb_log_buffer_size
      -- 日志刷新到磁盤時機:innodb_flush_log_at_trx_commit
      -- 查看:
      SHOW VARIABLES LIKE 'innodb_log_buffer_size';
      SHOW VARIABLES LIKE 'innodb_flush_log_at_trx_commit';
      #或
      SELECT @@innodb_log_buffer_size;
      SELECT @@innodb_flush_log_at_trx_commit;
      
    • 日志刷新到磁盤時機:innodb_flush_log_at_trx_commit(值:0/1/2)

      ⑩⑧【MySQL】InnoDB架構(gòu)、事務(wù)原理、MVCC多版本并發(fā)控制,SQL,拿來即用。,mysql,架構(gòu),數(shù)據(jù)庫,MVCC,事務(wù),并發(fā)




??磁盤架構(gòu)

磁盤結(jié)構(gòu) On-Disk Structures

  • ??System Tablespace系統(tǒng)表空間 是更改緩沖區(qū)的存儲區(qū)域。如果表是在系統(tǒng)表空間創(chuàng)建,而不是每個表文件或通用表空間中創(chuàng)建的,它也可能包含表和索引數(shù)據(jù)。(在MySQL5.x版本中還包含InnoDB數(shù)據(jù)字典、undologs等)。

    • #參數(shù) : innodb_data_file_path
      -- 查看相關(guān)信息
      SHOW VARIABLES LIKE '%data_file_path%';
      



  • ??File-Per-Table Tablespaces每個表的文件表空間 包含單個InnoDB表的數(shù)據(jù)和索引,并存儲在文件系統(tǒng)上的單個數(shù)據(jù)文件中。

    • #參數(shù) : innodb_file_per_table
      SHOW VARIABLES LIKE '%file_per_table%';
      



  • ??General Tablespaces通用表空間 ,需要通過CREATE TABLESPACE語法創(chuàng)建通用表空間,在創(chuàng)建表時,可以指定通用表空間。

    • -- 創(chuàng)建通用表空間
      CREATE TABLESPACE 通用表空間名稱 ADD
      DATAFILE '表空間文件名'
      ENGINE = 存儲引擎名;
      
      -- 創(chuàng)建表時指定關(guān)聯(lián)的通用表空間
      CREATE TABLE 表名(
      	字段1 字段1類型 [COMMENT 字段1注釋],
          字段2 字段2類型 [COMMENT 字段2注釋],
          字段3 字段3類型 [COMMENT 字段3注釋],
          ...
          字段n 字段n類型 [COMMENT 字段n注釋]
      )[COMMENT 表注釋] TABLESPACE 通用表空間名稱;
      



  • ??Undo Tablespaces:撤銷表空間,MySQL實例在初始化時會自動創(chuàng)建兩個默認(rèn)的undo表空間(初始大小16M),用于存儲undo log日志。



  • ??Temporary Tablespaces:InnoDB使用會話臨時表空間 和全局臨時表空間 。存儲用戶創(chuàng)建的臨時表等數(shù)據(jù)。



  • ??Doublewrite Buffer Files雙寫緩沖區(qū) ,innoDB引擎將數(shù)據(jù)頁從Buffer Pool刷新到磁盤前,先將數(shù)據(jù)頁寫入雙寫緩沖區(qū)文件中,便于系統(tǒng)異常時恢復(fù)數(shù)據(jù)。 (雙寫緩沖區(qū)文件:xxx.dblwr文件



  • ??Redo Log重做日志 ,是用來實現(xiàn)事務(wù)的持久性。該日志文件由兩部分組成:重做日志緩沖(redo log buffer) 以及 重做日志文件(redo log file) ,前者是在內(nèi)存中,后者在磁盤中。當(dāng)事務(wù)提交之后會把所有修改信息都會存到該日志中,用于在刷新臟頁到磁盤時,發(fā)生錯誤時,進行數(shù)據(jù)恢復(fù)使用。



??后臺線程

后臺線程

  • ??Master Thread
    • 核心后臺線程,負(fù)責(zé)調(diào)度其他線程,還負(fù)責(zé)將緩沖池中的數(shù)據(jù)異步刷新到磁盤中,保持?jǐn)?shù)據(jù)的一致性,還包括臟頁的刷新、合并插入緩存、undo頁的回收。



  • ??IO Thread
    • 在InnoDB存儲引擎中大量使用了AIO(異步非阻塞IO)來處理IO請求,這樣可以極大地提高數(shù)據(jù)庫的性能,而IO Thread主要負(fù)責(zé)這些IO請求的回調(diào)。
    • ⑩⑧【MySQL】InnoDB架構(gòu)、事務(wù)原理、MVCC多版本并發(fā)控制,SQL,拿來即用。,mysql,架構(gòu),數(shù)據(jù)庫,MVCC,事務(wù),并發(fā)



  • ??Purge Thread
    • 主要用于回收事務(wù)已經(jīng)提交了的undo log,在事務(wù)提交之后,undo log可能不用了,就用它來回收。



  • ??Page Cleaner Thread

    • 協(xié)助Master Thread刷新臟頁到磁盤的線程,它可以減輕Master Thread的工作壓力,減少阻塞。



3. 事務(wù)的原理

事務(wù)

事務(wù)是一組操作的集合,它是一個不可分割的工作單位,事務(wù)會把所有的操作作為一個整體一起向系統(tǒng)提交或撤銷操作請求,即這些操作要么同時成功,要么同時失敗。



事務(wù)四大特性

  • 原子性(Atomicity) 事務(wù)是不可分割的最小操作單元,要么全部成功,要么全部失敗。
  • 一致性(Consistency) 事務(wù)完成時,必須使所有的數(shù)據(jù)都保持一致狀態(tài)。
  • 隔離性(Isolation) 數(shù)據(jù)庫系統(tǒng)提供的隔離機制,保證事務(wù)在不受外部并發(fā)操作影響的獨立環(huán)境下運行。
  • 持久性(Durability) 事務(wù)一旦提交或回滾,它對數(shù)據(jù)庫數(shù)據(jù)的改變就是永久的。

⑩⑧【MySQL】InnoDB架構(gòu)、事務(wù)原理、MVCC多版本并發(fā)控制,SQL,拿來即用。,mysql,架構(gòu),數(shù)據(jù)庫,MVCC,事務(wù),并發(fā)


⑩⑧【MySQL】InnoDB架構(gòu)、事務(wù)原理、MVCC多版本并發(fā)控制,SQL,拿來即用。,mysql,架構(gòu),數(shù)據(jù)庫,MVCC,事務(wù),并發(fā)



?redo log

重做日志 - redo log

重做日志 ,記錄的是事務(wù)提交時數(shù)據(jù)頁的物理修改,是用來實現(xiàn)事務(wù)的持久性 。該日志文件由兩部分組成:重做日志緩沖(redo log buffer) 以及 重做日志文件(redo log file) ,前者是在內(nèi)存中,后者在磁盤中。當(dāng)事務(wù)提交之后會把所有修改信息都會存到該日志中,用于在刷新臟頁到磁盤時,發(fā)生錯誤時,進行數(shù)據(jù)恢復(fù)使用。

⑩⑧【MySQL】InnoDB架構(gòu)、事務(wù)原理、MVCC多版本并發(fā)控制,SQL,拿來即用。,mysql,架構(gòu),數(shù)據(jù)庫,MVCC,事務(wù),并發(fā)



?undo log

回滾日志 - undo log

回滾日志 ,用于記錄數(shù)據(jù)被修改前的信息,作用包含兩個:提供回滾MVCC(多版本并發(fā)控制) 。


undo logredo log 記錄物理日志不一樣,undo log 是邏輯日志。可以認(rèn)為當(dāng)delete一條記錄時,undo log中會記錄一條對應(yīng)的insert記錄,反之亦然,當(dāng)update 一條記錄時,它記錄一條對應(yīng)相反的update記錄。當(dāng)執(zhí)行rollback時,就可以從undo log中的邏輯記錄讀取到相應(yīng)的內(nèi)容并進行回滾。


  • Undo log銷毀
    • undo log在事務(wù)執(zhí)行時產(chǎn)生,事務(wù)提交時,并不會立即刪除undo log,因為這些日志可能還用于MVCC。

  • Undo log存儲
    • undo log采用段的方式進行管理和記錄,存放在前面介紹的rollback segment回滾段中,內(nèi)部包含1024個undo log segment。



4. MVCC


??MVCC基本概念

當(dāng)前讀

讀取的是記錄的最新版本,讀取時還要保證其他并發(fā)事務(wù)不能修改當(dāng)前記錄,會對讀取的記錄進行加鎖。對于我們日常的操作 ,如:
select..lock in share mode(共享鎖),select\update\insert\delete..for update(排他鎖)都是一種當(dāng)前讀



快照讀

簡單的select(不加鎖)就是快照讀,快照讀,讀取的是記錄數(shù)據(jù)的可見版本,有可能是歷史數(shù)據(jù),不加鎖,是非阻塞讀。

  • 事務(wù)隔離級別:
    • Read Committed :每次select,都生成一個快照讀。
    • Repeatable Read :開啟事務(wù)后第一個select語句才是快照讀的地方。
    • Serializable :快照讀會退化為當(dāng)前讀。



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

全稱Multi--Version Concurrency Control,多版本并發(fā)控制 。指維護一個數(shù)據(jù)的多個版本,使得讀寫操作沒有沖突 ,快照讀為MySQL實現(xiàn)MVCC提供了一個非阻塞讀功能。MVCC的具體實現(xiàn),還需要依賴于數(shù)據(jù)庫記錄中的:三個隱式字段、undo log日志、readView。




??MVCC實現(xiàn)原理

表的隱藏字段

⑩⑧【MySQL】InnoDB架構(gòu)、事務(wù)原理、MVCC多版本并發(fā)控制,SQL,拿來即用。,mysql,架構(gòu),數(shù)據(jù)庫,MVCC,事務(wù),并發(fā)



undo log - 回滾日志

  • 回滾日志 ,在insert、update、delete的時候產(chǎn)生的便于數(shù)據(jù)回滾的日志 。
  • 當(dāng)insert的時候,產(chǎn)生的undo log日志只在回滾時需要,在事務(wù)提交后,可被立即刪除 。
  • 而update、delete的時候,產(chǎn)生的undo log日志不僅在回滾時需要,在快照讀時也需要,不會立即被刪除 。

  • undo log 版本鏈
    • 不同事務(wù)或相同事務(wù)對同一條記錄進行修改,會導(dǎo)致該記錄的undolog生成一條記錄版本鏈表,鏈表的頭部是最新的舊記錄,鏈表尾部是最早的舊記錄。
    • ⑩⑧【MySQL】InnoDB架構(gòu)、事務(wù)原理、MVCC多版本并發(fā)控制,SQL,拿來即用。,mysql,架構(gòu),數(shù)據(jù)庫,MVCC,事務(wù),并發(fā)



readView - 讀視圖
ReadView(讀視圖)是快照讀SQL執(zhí)行時MVCC提取數(shù)據(jù)的依據(jù),記錄并維護系統(tǒng)當(dāng)前活躍的事務(wù)(未提交的)id。


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

READ COMMITTED:在事務(wù)中每一次執(zhí)行快照讀時生成ReadView。
REPEATABLE READ:僅在事務(wù)中第一次執(zhí)行快照讀時生成ReadView,后續(xù)復(fù)用該ReadView。


  • ReadView的4個核心字段:
    • ⑩⑧【MySQL】InnoDB架構(gòu)、事務(wù)原理、MVCC多版本并發(fā)控制,SQL,拿來即用。,mysql,架構(gòu),數(shù)據(jù)庫,MVCC,事務(wù),并發(fā)

⑩⑧【MySQL】InnoDB架構(gòu)、事務(wù)原理、MVCC多版本并發(fā)控制,SQL,拿來即用。,mysql,架構(gòu),數(shù)據(jù)庫,MVCC,事務(wù),并發(fā)





⑩⑧【MySQL】InnoDB架構(gòu)、事務(wù)原理、MVCC多版本并發(fā)控制,SQL,拿來即用。,mysql,架構(gòu),數(shù)據(jù)庫,MVCC,事務(wù),并發(fā)文章來源地址http://www.zghlxwxcb.cn/news/detail-759492.html

到了這里,關(guān)于⑩⑧【MySQL】InnoDB架構(gòu)、事務(wù)原理、MVCC多版本并發(fā)控制的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • MVCC------Mysql并發(fā)事務(wù)控制的工具

    MVCC------Mysql并發(fā)事務(wù)控制的工具

    MVCC 是 Multi-Version Concurrency Control(多版本并發(fā)控制)的縮寫,是數(shù)據(jù)庫系統(tǒng)中常用的一種并發(fā)控制方法。在MVCC 中,數(shù)據(jù)庫系統(tǒng)可以同時維護多個版本的數(shù)據(jù),每個事務(wù)在讀取數(shù)據(jù)時會看到一個一致性的快照,從而實現(xiàn)并發(fā)訪問而不會出現(xiàn)數(shù)據(jù)不一致的情況。這種機制能夠提

    2024年03月14日
    瀏覽(32)
  • MySQL 多版本并發(fā)控制 MVCC

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

    事務(wù)的4個隔離級別以及對應(yīng)的三種異常 讀未提交( Read uncommitted ) 讀已提交( Read committed ):臟讀 可重復(fù)讀( Repeatable read ):不可重復(fù)讀 串行化( Serializable ):幻讀 臟讀:一個事務(wù)讀取到了另外一個事務(wù)沒有提交的數(shù)據(jù); 不可重復(fù)讀:在同一個事務(wù)中,兩次讀取同一

    2024年01月18日
    瀏覽(23)
  • MySQL的多版本并發(fā)控制(MVCC)

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

    MVCC MVCC,是Multiversion Concurrency Control的縮寫,翻譯過來是多版本并發(fā)控制,和數(shù)據(jù)庫鎖樣,他也是一種并發(fā)控制的解決方案 我們知道,在數(shù)據(jù)庫中,對數(shù)據(jù)的操作主要有2種,分別是讀和寫,而在并發(fā)場景下,就可能出現(xiàn)以下 旦三種情況:讀-讀并發(fā),讀-寫并發(fā),寫-寫并發(fā) 我

    2024年01月18日
    瀏覽(27)
  • 【MySQL高級篇筆記-多版本并發(fā)控制MVCC(下) 】

    【MySQL高級篇筆記-多版本并發(fā)控制MVCC(下) 】

    此筆記為尚硅谷MySQL高級篇部分內(nèi)容 目錄 一、什么是MVCC 二、快照讀與當(dāng)前讀 1、快照讀? 2、當(dāng)前讀 三、復(fù)習(xí) 1、再談隔離級別 2、隱藏字段、Undo Log版本鏈 四、MVCC實現(xiàn)原理之ReadView? 1、什么是ReadView? 2、設(shè)計思路 3、ReadView的規(guī)則 4、MVCC整體操作流程 五、舉例說明 1、READ

    2024年02月08日
    瀏覽(23)
  • MYSQL的多版本并發(fā)控制MVCC(Multi-Version Concurrency Control)

    MYSQL的多版本并發(fā)控制MVCC(Multi-Version Concurrency Control)

    MVCC 是一種用于數(shù)據(jù)庫管理系統(tǒng)的并發(fā)控制技術(shù),允許多個事務(wù)同時訪問數(shù)據(jù)庫,而不會導(dǎo)致讀寫沖突。也就是說在讀寫的時候,線程不用去爭搶讀寫鎖。因為加鎖的過程比較耗性能。 當(dāng)然很多時候還是必須的,不能避免,比如說,去ATM機取錢的時候,同時又在手機APP上進行

    2024年02月07日
    瀏覽(27)
  • Mysql--技術(shù)文檔--MVCC(Multi-Version Concurrency Control | 多版本并發(fā)控制)

    Mysql--技術(shù)文檔--MVCC(Multi-Version Concurrency Control | 多版本并發(fā)控制)

    ????????MVCC(Multi-Version Concurrency Control)是一種并發(fā)控制機制,用于解決并發(fā)訪問數(shù)據(jù)庫時的數(shù)據(jù)一致性和隔離性問題。MVCC允許多個事務(wù)同時讀取數(shù)據(jù)庫的同一數(shù)據(jù),而不會相互干擾或?qū)е聸_突。 ????????在傳統(tǒng)的并發(fā)控制機制中,如鎖定機制,事務(wù)會對讀取和寫入

    2024年02月11日
    瀏覽(20)
  • 多版本并發(fā)控制MVCC

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

    MVCC (Multiversion Concurrency Control),多版本并發(fā)控制。顧名思義,MVCC 是通過數(shù)據(jù)行的多個版本管理來實現(xiàn)數(shù)據(jù)庫的 并發(fā)控制 。這項技術(shù)使得在InnoDB的事務(wù)隔離級別下執(zhí)行一致性讀操作有了保證。換言之,就是為了查詢一些正在被另一個事務(wù)更新的行,并且可以看到它們被更

    2024年02月08日
    瀏覽(19)
  • MVCC并發(fā)版本控制之重點ReadView

    本文大部分來自 《MySQL是怎樣運行的》,這里只是簡單總結(jié),用于各位回憶和復(fù)習(xí)。 對于使用 InnoDB 存儲引擎的表來說,它的聚簇索引記錄中都包含兩個必要的隱藏列(不知道的快去看《MySQL是怎樣運行的》) trx_id :每次一個事務(wù)對某條聚簇索引記錄進行改動時,都會把該事

    2024年02月09日
    瀏覽(20)
  • MVCC:多版本并發(fā)控制案例分析(二)

    (筆記總結(jié)自b站馬士兵教育課程) 本文主要分析readview的案例。 readview:表示事務(wù)進行快照讀操作的時候產(chǎn)生的讀視圖,在該事務(wù)進行快照讀的那一刻會生成一個系統(tǒng)當(dāng)前的快照,但是此時的快照不是數(shù)據(jù)的快照,而是事務(wù)相關(guān)信息的快照。 trx_list readview生成時刻當(dāng)前系統(tǒng)活

    2024年02月08日
    瀏覽(22)
  • 深入解析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)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包