并發(fā)鎖

在數(shù)據(jù)庫中,并發(fā)控制是指在多個用戶/進程線程同時對數(shù)據(jù)庫進行操作時,如何保證事務的一致性

和隔離性的,同時最大程度地并發(fā)。

當多個用戶/進程/線程同時對數(shù)據(jù)庫進行操作時,會出現(xiàn)3種沖突情形:

1.讀-讀,不存在任何問題

2.讀-寫,有隔離性問題,可能遇到臟讀(會讀到未提交的數(shù)據(jù)),幻影讀等。

3.寫寫,可能丟失更新

要解決沖突,一種辦法是是鎖,即基于鎖的并發(fā)控制,比如2PL,這種方式開銷比較高,而且無法

避免死鎖。

多版本并發(fā)控制(MVCC )是一種用來解決讀寫沖突的無鎖并發(fā)控制,也就是為事務分配單向增長

的時間戳,為每個修改保存一個版本,版本與事務時間戳關聯(lián),讀操作只讀該事務開始前的數(shù)據(jù)庫

的快照。這樣在讀操作不用阻塞寫操作,寫操作不用阻塞讀操作的同時,避免了臟讀和不可重復讀

樂觀并發(fā)控制(OCC )是一種用來解決寫寫沖突的無鎖并發(fā)控制,認為事務間爭用沒有那么多,所

以先進行修改,在提交事務前,檢查一下事務開始后,有沒有新提交改變,如果沒有就提交,如果

有就放棄并重試。樂觀并發(fā)控制類似自選鎖。樂觀并發(fā)控制適用于低數(shù)據(jù)爭用,寫沖突比較少的環(huán)

境。

多版本并發(fā)控制可以結合基于鎖的并發(fā)控制來解決寫寫沖突,即MVCC+2PL,也可以結合樂觀并

發(fā)控制來解決寫-寫沖突。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容