數(shù)據(jù)庫并發(fā)事務(wù)存在的問題(臟讀钾菊、不可重復(fù)讀帅矗、幻讀等)

一個數(shù)據(jù)庫可能擁有多個訪問客戶端,這些客戶端并發(fā)訪問數(shù)據(jù)庫時煞烫,若沒有采取必要的隔離措施浑此,存在以下問題,這些問題分為5類滞详,包括3類數(shù)據(jù)讀問題:臟讀凛俱、不可重復(fù)讀和幻讀。兩類數(shù)據(jù)更新問題:第一類丟失更新料饥、第二類丟失更新最冰。

1.臟讀

A事務(wù)讀取B事務(wù)尚未提交的更改數(shù)據(jù),并在這個數(shù)據(jù)的基礎(chǔ)上進(jìn)行操作稀火,這時候如果事務(wù)B回滾暖哨,那么A事務(wù)讀到的數(shù)據(jù)是不被承認(rèn)的。例如常見的取款事務(wù)和轉(zhuǎn)賬事務(wù):


2.不可重復(fù)讀

不可重復(fù)讀是指A事務(wù)讀取了B事務(wù)已經(jīng)提交的更改數(shù)據(jù)凰狞。假如A在取款事務(wù)的過程中篇裁,B往該賬戶轉(zhuǎn)賬100,A兩次讀取的余額發(fā)生不一致赡若。

3.幻讀

A事務(wù)讀取B事務(wù)提交的新增數(shù)據(jù),會引發(fā)幻讀問題达布。幻讀一般發(fā)生在計算統(tǒng)計數(shù)據(jù)的事務(wù)中逾冬,例如銀行系統(tǒng)在同一個事務(wù)中兩次統(tǒng)計存款賬戶的總金額黍聂,在兩次統(tǒng)計中,剛好新增了一個存款賬戶身腻,存入了100产还,這時候兩次統(tǒng)計的總金額不一致。


注意:不可重復(fù)讀和幻讀的區(qū)別是:前者是指讀到了已經(jīng)提交的事務(wù)的更改數(shù)據(jù)(修改或刪除)嘀趟,后者是指讀到了其他已經(jīng)提交事務(wù)的新增數(shù)據(jù)脐区。對于這兩種問題解決采用不同的辦法,防止讀到更改數(shù)據(jù)她按,只需對操作的數(shù)據(jù)添加行級鎖牛隅,防止操作中的數(shù)據(jù)發(fā)生變化炕柔;二防止讀到新增數(shù)據(jù),往往需要添加表級鎖媒佣,將整張表鎖定匕累,防止新增數(shù)據(jù)(oracle采用多版本數(shù)據(jù)的方式實現(xiàn))。

4.第一類丟失更新

A事務(wù)撤銷時默伍,把已經(jīng)提交的B事務(wù)的更新數(shù)據(jù)覆蓋了哩罪。例如:


這時候取款事務(wù)A撤銷事務(wù),余額恢復(fù)為1000巡验,這就丟失了更新际插。

5.第二類丟失更新

A事務(wù)覆蓋B事務(wù)已經(jīng)提交的數(shù)據(jù),造成B事務(wù)所做的操作丟失


為了解決上述問題显设,數(shù)據(jù)庫通過鎖機(jī)制解決并發(fā)訪問的問題框弛。根據(jù)鎖定對象不同:分為行級鎖和表級鎖;根據(jù)并發(fā)事務(wù)鎖定的關(guān)系上看:分為共享鎖定和獨占鎖定捕捂,共享鎖定會防止獨占鎖定但允許其他的共享鎖定瑟枫。而獨占鎖定既防止共享鎖定也防止其他獨占鎖定。為了更改數(shù)據(jù)指攒,數(shù)據(jù)庫必須在進(jìn)行更改的行上施加行獨占鎖定慷妙,insert、update允悦、delete和selsct for update語句都會隱式采用必要的行鎖定膝擂。

但是直接使用鎖機(jī)制管理是很復(fù)雜的,基于鎖機(jī)制隙弛,數(shù)據(jù)庫給用戶提供了不同的事務(wù)隔離級別架馋,只要設(shè)置了事務(wù)隔離級別,數(shù)據(jù)庫就會分析事務(wù)中的sql語句然后自動選擇合適的鎖全闷。
不同的隔離級別對并發(fā)問題的解決情況如圖:

注意:事務(wù)的隔離級別和數(shù)據(jù)庫并發(fā)性是成反比的叉寂,隔離級別越高,并發(fā)性越低总珠。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末屏鳍,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子局服,更是在濱河造成了極大的恐慌钓瞭,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腌逢,死亡現(xiàn)場離奇詭異降淮,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)搏讶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門佳鳖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人媒惕,你說我怎么就攤上這事系吩。” “怎么了妒蔚?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵穿挨,是天一觀的道長。 經(jīng)常有香客問我肴盏,道長科盛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任菜皂,我火速辦了婚禮贞绵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘恍飘。我一直安慰自己榨崩,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布章母。 她就那樣靜靜地躺著母蛛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪乳怎。 梳的紋絲不亂的頭發(fā)上彩郊,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機(jī)與錄音蚪缀,去河邊找鬼焦辅。 笑死,一個胖子當(dāng)著我的面吹牛椿胯,可吹牛的內(nèi)容都是我干的筷登。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼哩盲,長吁一口氣:“原來是場噩夢啊……” “哼前方!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起廉油,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤惠险,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后抒线,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體班巩,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年嘶炭,在試婚紗的時候發(fā)現(xiàn)自己被綠了抱慌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逊桦。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖抑进,靈堂內(nèi)的尸體忽然破棺而出强经,到底是詐尸還是另有隱情,我是刑警寧澤寺渗,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布匿情,位于F島的核電站,受9級特大地震影響信殊,放射性物質(zhì)發(fā)生泄漏炬称。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一涡拘、第九天 我趴在偏房一處隱蔽的房頂上張望玲躯。 院中可真熱鬧,春花似錦鲸伴、人聲如沸府蔗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽姓赤。三九已至,卻和暖如春仲吏,著一層夾襖步出監(jiān)牢的瞬間不铆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工裹唆, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留誓斥,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓许帐,卻偏偏與公主長得像劳坑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子成畦,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

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