這篇文章帶給大家的內容是關於MySQL的MVCC的用法介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
MVCC(多重版本並發控制)
作用:很多情況下可以避免加鎖操作,並降低開銷。
InnoDB下的MVCC
透過在每行記錄後面保存兩個隱藏的列來實現,行的建立時間、行的過期時間(刪除時間)。這裡的時間指的是系統版本號,每開始一個新的事物,系統版本號就會自增。事物開始時刻的系統版本號會作為事物的版本號,用來和查詢到的每行記錄的版本號進行比較。
REPEATABLE READ隔離等級下MVCC的特定操作
SELECT
InnoDB 只查找版本早於目前事物版本的資料行(行的系統版本號<= 事物的系統版本號),這樣可以確保事物讀取的行,要么是在事物開始前已經存在的,要么是事物自身插入或者修改過的。 (也就是和其它事物是隔離的)
行的刪除版本要么未定義,要么大於當前事物版本號。這樣可以確保事物讀取到的行,在事物開始之前未被刪除。
符合上面兩個條件的記錄才能回傳做完查詢結果。
INSERT
InnoDB 為新插入的每一行儲存目前系統版本號碼作為行版本號。
UPDATE
InnoDB 為插入一行新記錄,保存當前系統版本號作為行版本號,同時保存當前系統版本號到原來的行作為行刪除標識。
DELETE
InnoDB 為刪除的每一行儲存目前系統版本號碼作為刪除識別。
這篇文章到這裡就已經全部結束了,更多其他精彩內容可以關注PHP中文網的MySQL教學影片專欄!
#以上是MySQL的MVCC的用法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!