首頁  >  文章  >  資料庫  >  MySQL的MVCC的用法介紹

MySQL的MVCC的用法介紹

不言
不言轉載
2019-03-22 11:30:514009瀏覽

這篇文章帶給大家的內容是關於MySQL的MVCC的用法介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

MVCC(多重版本並發控制)

作用:很多情況下可以避免加鎖操作,並降低開銷。

InnoDB下的MVCC

透過在每行記錄後面保存兩個隱藏的列來實現,行的建立時間、行的過期時間(刪除時間)。這裡的時間指的是系統版本號,每開始一個新的事物,系統版本號就會自增。事物開始時刻的系統版本號會作為事物的版本號,用來和查詢到的每行記錄的版本號進行比較。

REPEATABLE READ隔離等級下MVCC的特定操作

SELECT

InnoDB 只查找版本早於目前事物版本的資料行(行的系統版本號<= 事物的系統版本號),這樣可以確保事物讀取的行,要么是在事物開始前已經存在的,要么是事物自身插入或者修改過的。 (也就是和其它事物是隔離的)

行的刪除版本要么未定義,要么大於當前事物版本號。這樣可以確保事物讀取到的行,在事物開始之前未被刪除。

符合上面兩個條件的記錄才能回傳做完查詢結果。

INSERT

InnoDB 為新插入的每一行儲存目前系統版本號碼作為行版本號。

UPDATE

InnoDB 為插入一行新記錄,保存當前系統版本號作為行版本號,同時保存當前系統版本號到原來的行作為行刪除標識。

DELETE

InnoDB 為刪除的每一行儲存目前系統版本號碼作為刪除識別。

這篇文章到這裡就已經全部結束了,更多其他精彩內容可以關注PHP中文網的MySQL教學影片專欄!

#

以上是MySQL的MVCC的用法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除