mvcc多版本控制

MySQL的大多數(shù)事務(wù)型存儲(chǔ)引擎都不是簡(jiǎn)單的行級(jí)鎖。各大數(shù)據(jù)庫(kù)基本都采用MVCC,但不盡相同。

InnoDB的簡(jiǎn)化版:(MVCC實(shí)現(xiàn)原理)
在每行記錄后面保存兩個(gè)隱藏的列來(lái)實(shí)現(xiàn),一個(gè)保存了行的創(chuàng)建版本號(hào),一個(gè)保存行的過(guò)期版本號(hào)(刪除版本號(hào))。

版本號(hào):

  1. 系統(tǒng)版本號(hào):每開(kāi)始一個(gè)新的事務(wù),系統(tǒng)版本號(hào)就會(huì)自動(dòng)增加
  2. 事務(wù)版本號(hào):事務(wù)開(kāi)始時(shí)刻的系統(tǒng)版本號(hào)

當(dāng)執(zhí)行select操作時(shí)候:

  1. 只查找版本早于當(dāng)前事務(wù)版本的數(shù)據(jù)行。 確保事務(wù)讀取的行,在事務(wù)開(kāi)始之前就存在的,或者是事務(wù)自身插入或者修改過(guò)的。
  2. 行的刪除版本號(hào)要么未定義,要么大于當(dāng)前事務(wù)版本號(hào)。 確保事務(wù)查詢(xún)到的行,在事務(wù)開(kāi)始之前沒(méi)被刪除。

insert操作:
為新插入的每一行保存當(dāng)前系統(tǒng)版本號(hào)為行創(chuàng)建版本號(hào)。

delete操作:
為刪除的行保存當(dāng)前系統(tǒng)版本號(hào)作為行刪除版本號(hào)。

update操作:
為插入一行新數(shù)據(jù)保存當(dāng)前版本號(hào)作為該新行行創(chuàng)建版本號(hào),同時(shí)保存當(dāng)前系統(tǒng)版本號(hào)到原來(lái)的行作為行刪除版本號(hào)。

可見(jiàn)update = delete+insert

采用MVCC這個(gè)原理,大多操作可以不用加鎖,使得讀數(shù)據(jù)操作簡(jiǎn)單,性能好,缺點(diǎn)是額外的存儲(chǔ)空間消耗,更多的行檢查和維護(hù)工作。MVCC只能在REPEATABLE READ 和READ COMMITTED兩個(gè)隔離級(jí)別下工作。其他兩個(gè)隔離級(jí)別跟MVCC不兼容。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一.背景 數(shù)據(jù)庫(kù)為了實(shí)現(xiàn)讀寫(xiě)并行,也就是說(shuō)某一行數(shù)據(jù)在修改的時(shí)候會(huì)阻塞其他線(xiàn)程修改但不會(huì)阻塞讀,其他線(xiàn)程還可以...
    愛(ài)吃糖果閱讀 756評(píng)論 0 0
  • 最近碰到幾個(gè)業(yè)務(wù)場(chǎng)景,會(huì)遇到并發(fā)的問(wèn)題。在單實(shí)例情況下,我們會(huì)通過(guò)java.util.concurrent包...
    菜鳥(niǎo)小玄閱讀 2,313評(píng)論 0 5
  • MVCC概念:InnoDB使用MVCC實(shí)現(xiàn)高并發(fā) MVCC并不是MySql獨(dú)有的,Oracle,PostgreSQ...
    極簡(jiǎn)架構(gòu)閱讀 2,051評(píng)論 0 5
  • 什么是事務(wù) 事務(wù)是一條或多條數(shù)據(jù)庫(kù)操作語(yǔ)句的組合,具備ACID,4個(gè)特點(diǎn)。 原子性:要不全部成功,要不全部撤銷(xiāo) 隔...
    jiangmo閱讀 1,194評(píng)論 0 3
  • 索引 數(shù)據(jù)庫(kù)中的查詢(xún)操作非常普遍,索引就是提升查找速度的一種手段 索引的類(lèi)型 從數(shù)據(jù)結(jié)構(gòu)角度分 1.B+索引:傳統(tǒng)...
    一凡呀閱讀 3,199評(píng)論 0 8

友情鏈接更多精彩內(nèi)容