在數(shù)據(jù)庫中,并發(fā)控制是指在多個(gè)用戶/進(jìn)程線程同時(shí)對數(shù)據(jù)庫進(jìn)行操作時(shí)宪彩,如何保證事務(wù)的一致性
和隔離性的,同時(shí)最大程度地并發(fā)讲婚。
當(dāng)多個(gè)用戶/進(jìn)程/線程同時(shí)對數(shù)據(jù)庫進(jìn)行操作時(shí)尿孔,會出現(xiàn)3種沖突情形:
1.讀-讀,不存在任何問題
2.讀-寫筹麸,有隔離性問題活合,可能遇到臟讀(會讀到未提交的數(shù)據(jù)),幻影讀等。
3.寫寫物赶,可能丟失更新
要解決沖突白指,一種辦法是是鎖,即基于鎖的并發(fā)控制酵紫,比如2PL,這種方式開銷比較高告嘲,而且無法
避免死鎖。
多版本并發(fā)控制(MVCC )是一種用來解決讀寫沖突的無鎖并發(fā)控制奖地,也就是為事務(wù)分配單向增長
的時(shí)間戳状蜗,為每個(gè)修改保存一個(gè)版本,版本與事務(wù)時(shí)間戳關(guān)聯(lián)鹉动,讀操作只讀該事務(wù)開始前的數(shù)據(jù)庫
的快照轧坎。這樣在讀操作不用阻塞寫操作,寫操作不用阻塞讀操作的同時(shí)泽示,避免了臟讀和不可重復(fù)讀
樂觀并發(fā)控制(OCC )是一種用來解決寫寫沖突的無鎖并發(fā)控制缸血,認(rèn)為事務(wù)間爭用沒有那么多蜜氨,所
以先進(jìn)行修改,在提交事務(wù)前捎泻,檢查一下事務(wù)開始后飒炎,有沒有新提交改變,如果沒有就提交笆豁,如果
有就放棄并重試郎汪。樂觀并發(fā)控制類似自選鎖。樂觀并發(fā)控制適用于低數(shù)據(jù)爭用闯狱,寫沖突比較少的環(huán)
境煞赢。
多版本并發(fā)控制可以結(jié)合基于鎖的并發(fā)控制來解決寫寫沖突,即MVCC+2PL,也可以結(jié)合樂觀并
發(fā)控制來解決寫-寫沖突哄孤。