热门问题
时间线
聊天
视角

多版本並行控制

来自维基百科,自由的百科全书

Remove ads

多版本並行控制(Multiversion concurrency control, MCCMVCC),是資料庫管理系統常用的一種並行控制,也用於程式語言實現事務主記憶體[1]

MVCC意圖解決讀寫鎖造成的多個、長時間的讀操作餓死寫操作問題。每個事務讀到的數據項都是一個歷史快照,並依賴於實現的隔離級別。寫操作不覆蓋已有數據項,而是建立一個新的版本,直至所在操作提交時才變為可見。快照隔離使得事務看到它啟動時的數據狀態。

演算法

MVCC使用時間戳 (TS), 或「自動增量的事務ID」實現「事務一致性」。MVCC可以確保每個事務(T)通常不必「讀等待」資料庫對象(P)。這通過對象有多個版本,每個版本有建立時間戳廢止時間戳 (WTS)做到的。

事務Ti讀取對象(P)時,只有比事務Ti的時間戳早,但是時間上最接近事務Ti的對象版本可見,且該版本應該沒有被廢止。

事務Ti寫入對象P時,如果還有事務Tk要寫入同一對象,則(Ti)必須早於(Tk),即 (Ti) < (Tk),才能成功。[2]

MVCC可以無鎖英語Non-lock concurrency control實現。

歷史

MVCC在1981年的一篇論文"Concurrency Control in Distributed Database Systems"[3]被充分論述,並成為經典描述。一般認為原創工作始於1978年David P. Reed英語David P. Reed的博士學位論文[4]

資料庫實現

現在,多數資料庫系統已經使用MVCC。

參考文獻

延伸閱讀

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads