資料庫MVCC和隔離級別的關係是什麼?

時間 2021-05-08 07:05:06

1樓:婁晨耀

隔離級別是指資料庫對transactions行為的保證。比如說serializable 保證每個transaction 就像乙個原子操作在乙個時間點發生。repeatable read 保證了讀過的資料再次讀還是一樣,聽起來就比serializable 差很多。

保證了serializable 肯定有 repeatable read。

不同的concurrency control(cc),以及這些cc的變種保證了不同的隔離級別。比如常見的2pl,可以根據鎖的釋放方式,達到serializable或者read uncommitted。具體的演算法保證了隔離級別。

而multi-version cc(mvcc)是說cc利用了底層儲存是multi-version的特性(每行可以存當前值以及歷史值)。mvcc並不是某乙個演算法。

所以即使在multi-version下,也可以有2pl,tso,occ這些演算法以及變種。這些具體的演算法和變種決定了隔離級別,而不是mvcc決定。

所以直接回答題主的提問:mvcc 並不是「樂觀鎖」,或者「悲觀鎖」,而是一類演算法。如果說2pl 是題主說的"悲觀鎖「的話,mvcc當然可以和2pl結合使用。

其實是支援read uncommitted,支援read committed肯定就已經有read uncommitted了呀。但是為什麼不只支援到read uncommitted 級別要支援更強的呢?可能是沒有意義吧,read uncommited 只要讀的時候保證原子讀寫(加鎖,讀寫完立即釋放),不管上不上mvcc 都能達到。

2樓:任弘迪

關係是 mvcc 是隔離級別的一種實現方式,其他方式還有比如 2pl。

悲觀樂觀指的是在執行事務時假定大概率會衝突還是不會衝突。他們在加鎖時機、語義和效能上會有區別,跟隔離級別沒有直接關係。mvcc 在加鎖的實現上可以是樂觀的也可以是悲觀的。

3樓:

臥槽能把問題問的這麼清新脫俗脫褲子放屁也是一種水平啊

mvcc是一種事務isolation實現方式,但是樂觀的mvcc實現不了read uncomitted,比如myrocks就不支援ru

innodb的mvcc實現ru和rc的辦法很簡單,ru就是始終讀最新資料,rc就是每次都建新的readview,不保留最開始的readview

4樓:

對於單版本的2pl來說

是衝突的,這裡的W是write和R是read,i和j是事務i和事務j也就是鎖滿足下面條件:

1操作同乙個變數

2 兩個事務(或者兩個以上)

3 其中乙個是寫操作

這些是不可交換的,對於單版本的相容矩陣來說 , 只要有寫操作都是不相容的.不相容怎麼辦?

1 阻塞

2 回滾

那麼變成mv2pl之後

讀和寫不再阻塞,而是寫寫不相容,certifylock和其他所有操作都不相容.這樣減少了讀寫不相容導致的阻塞或者回滾,將他延後至獲得certifylock的時候再阻塞或者回滾.

寫鎖要轉換成certifylock仍然需要阻塞等待對應行的資料commit,但是讀的不需要了,可以減少讀的阻塞,提高讀的併發.

5樓:陳廣勝

read uncommitted可以直接讀髒資料,讀版本鏈最開始的記錄就可以了,不需要讀舊版本資訊。

serializable需要對讀加鎖,不需要應用多版本資訊。

read committed/repeatable read實現了語句/事務快照,會讀多版本。

參考我在另乙個問題的回答。

MySQL 是如何實現四大隔離級別的?

資料庫MVCC中,如何判斷併發事務能否Commit

雷鋒來了 org wiki Optimistic concurrency control事務提交的時候把該事務讀過和寫過的資料重讀一遍,看看看看這些資料是否被修改過,如果沒有被修改就可以提交 這裡可以分3個問題來回答 1.一條記錄的MVCC結構 entry 可以看作 key k1,注釋 txid為1...

請問分析型資料庫是什麼?它和關係型資料庫有什麼區別?

蔡志巨集 分析型資料庫通常指的是多維資料倉儲。OLAP。典型的包括 Essbase,TM1,BW,SQL Server AS,智達方通 Intcube OLAP等。關係型資料庫 RDBMS,OLTP,適合搭建事務型交易型應用,簡單來講,擅長記流水賬。但不擅長做資料分析,因為其資料的結構性要弱於資料倉...

文件型資料庫相對關聯式資料庫的缺點是什麼

iammutex 首先,一致性問題和是否採用文件型儲存是沒有關係的。一致性問題是由於系統既要保證分布式又要求高效能導致的。說白了就是資料不同步,目前文件型資料庫如MongoDB並沒有說在一致性上有多大問題。當前的文件型資料庫以MongoDB和CouchDB發展最好,而二者除了在儲存結構上都是文件型外...