事務(wù)ACID以及不一致性問題

主要內(nèi)容:

  • 事務(wù)概念
  • 事務(wù)特性
  • 事務(wù)不一致性問題

說到數(shù)據(jù)庫贫母,大家就會想到事務(wù)盒刚。對于事務(wù)來說,會想到事務(wù)的特性ACID以及不一致性問題橘原,這里深入講解下這兩點涡上。

事務(wù)

說事務(wù)特性之前,思考下什么是事務(wù)呢吩愧?事務(wù)其實就是一組相互依賴的操作序列,那么事務(wù)的成功意味著這些操作行為都要成功執(zhí)行脐帝,如果有一個行為失敗,整個事務(wù)也是失敗的堵腹。舉個最常見的例子銀行轉(zhuǎn)賬業(yè)務(wù),A向B賬戶轉(zhuǎn)賬100元旱易,這個事務(wù)分為兩個操作行為:操作1——A賬戶減少100元腿堤,操作2——B賬戶增加100元。

事務(wù)特性

原子性

高中物理說過笆檀,原子是化學(xué)反應(yīng)中不可分割的基本微粒。事務(wù)的原子性呢浸船,就是事務(wù)中的操作行為是不可分割的工作單元寝蹈,這些操作要么全部操作成功事務(wù)成功,要么某個行為失敗事務(wù)回滾箫老。
用例子來說明,如果轉(zhuǎn)賬過程中A賬戶減少了100元操作成功阔籽,但是往B賬戶增加100元操作失敗牲蜀,那么這個事務(wù)是失敗的,回滾到最初狀態(tài)涣达,即要么全部失敗。

一致性

事務(wù)的一致性指事務(wù)執(zhí)行之前和執(zhí)行之后必須處于一致性狀態(tài)匆篓,這樣說比較難懂寇窑。
舉例子來說明,A和B賬戶總金額為1000元錢甩骏,那么A向B賬戶轉(zhuǎn)賬事務(wù)執(zhí)行成功以后先慷,A和B賬戶的總金額還是1000元錢谨设。

隔離性

隔離性指一個事務(wù)的操作以及用到的數(shù)據(jù)對其他并發(fā)的事務(wù)是隔離的缎浇,并發(fā)執(zhí)行的各個事務(wù)之間互不干擾。即使多個事務(wù)并發(fā)執(zhí)行二蓝,看上去的效果是多個成功事務(wù)串行調(diào)度執(zhí)行指厌,事務(wù)感覺不到其他并發(fā)事務(wù)的執(zhí)行。
舉個例子踩验,例如兩個并發(fā)的事務(wù)T1和T2,從T1角度看牡借,T2要么在它執(zhí)行之前已經(jīng)結(jié)束袭异,要么在它執(zhí)行完成后才開始。

持久性

持久性指的是如果一個事務(wù)被提交了御铃,那么事務(wù)對數(shù)據(jù)庫所做的修改是持久的,系統(tǒng)崩潰或者機(jī)器故障對它都是不會產(chǎn)生影響的咬腋。
比如例子中如果A向B賬戶轉(zhuǎn)賬成功以后睡互,那么這個轉(zhuǎn)賬記錄就會保存,不用擔(dān)心丟失這個記錄犀填。

事務(wù)的不一致性

事務(wù)是并發(fā)控制的基本單位嗓违,如果多個線程都開啟事務(wù)操作數(shù)據(jù)庫中的相同數(shù)據(jù)時,如果沒有采取隔離性措施蹂季,那么可能會造成數(shù)據(jù)的不一致性疏日。并發(fā)操作帶來的數(shù)據(jù)不一致性問題主要分為四類撒汉,接下來具體介紹下這四類。

丟失更新

多個事務(wù)獲取同一個數(shù)據(jù)挠阁,并且都基于原始數(shù)據(jù)進(jìn)行更新溯饵,而每個事務(wù)都不知道其他事務(wù)的存在,所以最后的更新將會覆蓋其他事務(wù)的更新操作丰刊。
舉訂票操作來說明,

  • t1時刻事務(wù)T1中A售票員查詢某一班車的剩余票數(shù)D為10寻歧;
  • t2時刻事務(wù)T2中B售票員查詢同一班車的剩余票數(shù)D也為10秩仆;
  • t3時刻事務(wù)T1售票員A賣出一張票,剩余票數(shù)D修改為9逗概,寫入數(shù)據(jù)庫;
  • t4時刻事務(wù)T2售票員B也賣出一張票卿城,因為t2時刻讀取到的剩余票數(shù)為10铅搓,修改為9并寫入數(shù)據(jù)庫。最后結(jié)果為9多望,但其實是賣出了兩張票氢烘,事務(wù)T2的修改覆蓋了事務(wù)T1的修改,即丟失更新問題播玖。

臟讀

臟讀指事務(wù)獲取到了臟數(shù)據(jù),具體說是一個事務(wù)讀取到了另一個未提交事務(wù)中的數(shù)據(jù)维蒙。
舉發(fā)工資的例子來說明,

  • 事務(wù)T1開始颅痊,hr給李四發(fā)5000元工資,但還沒有提交事務(wù)菱属。
  • 這時候事務(wù)T2李四查看自己工資恋捆,發(fā)現(xiàn)有5000元重绷,激動人心。
  • 但事務(wù)T1中hr發(fā)現(xiàn)工資計算錯誤愤钾,工資應(yīng)該是4000元候醒,回滾了事務(wù)。那么事務(wù)T2李四讀取到的數(shù)據(jù)和數(shù)據(jù)庫中數(shù)據(jù)是不一致倒淫,即所謂的臟數(shù)據(jù)。

不可重復(fù)讀

對于某個數(shù)據(jù)镜硕,一個事務(wù)范圍內(nèi)多次查詢該數(shù)據(jù)獲得了不同的返回結(jié)果返干。即事務(wù)T1包含多次查詢操作,第一次讀取數(shù)據(jù)后矩欠,在事務(wù)T1時間范圍內(nèi)事務(wù)T2對該數(shù)據(jù)進(jìn)行修改并提交,下一個操作再次查詢該數(shù)據(jù)躺坟,就會得到和第一次不同的結(jié)果乳蓄。

幻讀

一個事務(wù)在提交查詢結(jié)果前,另一個事務(wù)對數(shù)據(jù)進(jìn)行了修改導(dǎo)致了該查詢結(jié)果的更改匣摘,產(chǎn)生了幻讀。

  • 事務(wù)T1音榜,李四查詢這個月信用卡總共消費筆數(shù),但沒有提交查詢結(jié)果擦囊。
  • 事務(wù)T2張三使用這個信用卡消費了新的一筆交易嘴办。
  • 這時候事務(wù)T1再次查詢消費筆數(shù)發(fā)現(xiàn)筆數(shù)增加,產(chǎn)生了幻覺涧郊。

比較

可以發(fā)現(xiàn)幻讀和不可重復(fù)讀都是讀取了已提交事務(wù)的數(shù)據(jù),而不可重復(fù)讀針對的是同一條數(shù)據(jù)彤灶,幻讀針對一批數(shù)據(jù)(例如統(tǒng)計數(shù)據(jù)的個數(shù))批旺。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末汽煮,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子暇赤,更是在濱河造成了極大的恐慌,老刑警劉巖契邀,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件失暴,死亡現(xiàn)場離奇詭異,居然都是意外死亡古戴,警方通過查閱死者的電腦和手機(jī)矩肩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叉袍,“玉大人,你說我怎么就攤上這事喳逛。” “怎么了姐呐?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵典蝌,是天一觀的道長。 經(jīng)常有香客問我鸠澈,道長砖织,這世上最難降的妖魔是什么末荐? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮眶熬,結(jié)果婚禮上块请,老公的妹妹穿的比我還像新娘。我一直安慰自己墩新,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布绵疲。 她就那樣靜靜地躺著臣疑,像睡著了一般。 火紅的嫁衣襯著肌膚如雪郁岩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天萍摊,我揣著相機(jī)與錄音如叼,去河邊找鬼。 笑死薇正,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的雕沿。 我是一名探鬼主播猴仑,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼疾渣!你這毒婦竟也來了崖飘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤吊圾,失蹤者是張志新(化名)和其女友劉穎翰蠢,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體梁沧,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡廷支,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了砚殿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芝囤。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡辛萍,死狀恐怖贩毕,靈堂內(nèi)的尸體忽然破棺而出仆嗦,到底是詐尸還是另有隱情,我是刑警寧澤瘩扼,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布集绰,位于F島的核電站,受9級特大地震影響栽燕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜碍岔,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一蔼啦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧询吴,春花似錦亮元、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至成肘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間砚偶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工均芽, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留单鹿,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓劲妙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親是趴。 傳聞我的和親對象是個殘疾皇子澄惊,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

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