數據庫內核雜談(十二):事務、隔離、併發(3)

之前的文章,我們分別介紹了鎖和時間戳機制來管理併發控制,這篇文章我們將介紹最被廣泛使用的方法——多版本併發控制Multi-Version Concurrency Control (MVCC)。

爲什麼多版本併發控制更受歡迎呢?因爲鎖和時間戳機制都是通過阻塞或者回滾衝突的事務來確保事務的有序性。比如,一個讀操作可能被迫回滾,因爲它要讀取的數據已經被另一個更新的事務修改了。但是,如果我們把每個數據的所有歷史版本都記錄下來,就可以避免上述這種情況發生。這也正是多版本控制的由來:對於每個數據Q,每次寫操作write(Q)都會給Q建立一個新版本;而對於讀操作read(Q),會根據事務的先後關係選擇一個正確的版本去讀取,來保證事務的有序性。多版本控制能夠很好地解決這類讀寫衝突,尤其是長時間的讀操作餓死寫操作問題。

插一個能夠提升格調的小知識,MVCC最早出現於1978年Dr. Reed的博士畢業論文“ Concurrency Control in Distributed Database Systems ”中( https://en.wikipedia.org/wiki/David_P._Reed),有興趣的同學可以去看一下。

原文鏈接:【https://www.infoq.cn/article/gaOh3me9PmJBiQFD2j15】。未經作者許可,禁止轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章