mysql事務(wù)的隔離機(jī)制

一、什么是事務(wù)?

事務(wù)是由一組sql語(yǔ)句組成的邏輯處理單元需五。

二、事務(wù)的ACID屬性

  • 原子性(Atomicity)
    事務(wù)是一個(gè)原子操作單元诗舰。特點(diǎn)是不可再分警儒,當(dāng)操作中有多個(gè)步驟時(shí),要么全成功眶根,要么全失敗蜀铲。

  • 一致性(Consistent)
    在事務(wù)開(kāi)始與完成時(shí),數(shù)據(jù)都必須保持一致?tīng)顟B(tài)属百,這意味著所有相關(guān)數(shù)據(jù)規(guī)則都必須應(yīng)用于事務(wù)的修改记劝,以保持?jǐn)?shù)據(jù)的完整性。
    例如族扰,A向B轉(zhuǎn)賬厌丑,不可能A扣了錢(qián),B卻沒(méi)收到渔呵。

  • 隔離性(Isolation)
    數(shù)據(jù)庫(kù)系統(tǒng)提供統(tǒng)一的隔離機(jī)制怒竿,保證每個(gè)事務(wù)都在單獨(dú)的環(huán)境執(zhí)行,事務(wù)之間互不影響扩氢。
    這意味著事務(wù)之間處理過(guò)程是對(duì)其他事務(wù)不可見(jiàn)的耕驰。

  • 持久性(Durable)
    事務(wù)完成后,它對(duì)數(shù)據(jù)的修改時(shí)永久性的录豺,即使出現(xiàn)系統(tǒng)宕機(jī)朦肘,數(shù)據(jù)依然能恢復(fù),存在于數(shù)據(jù)庫(kù)双饥。

三媒抠、事務(wù)并發(fā)帶來(lái)的4類(lèi)問(wèn)題

  • 臟讀(Dirty Reads)
    事務(wù)A讀取到了事務(wù)B修改但尚未提交的數(shù)據(jù),然后事務(wù)B回滾了咏花,因此事務(wù)A基于此數(shù)據(jù)做的操作都是無(wú)效的趴生,就是讀到了臟數(shù)據(jù)(實(shí)際上應(yīng)該存在的數(shù)據(jù)),所以叫臟讀。

  • 臟寫(xiě)或丟失更新(Lost Update)
    第一類(lèi)丟失更新:撤銷(xiāo)(rollback)一個(gè)事務(wù)時(shí)冲秽,把其他事務(wù)已經(jīng)提交更新的數(shù)據(jù)給回滾掉了舍咖。
    第二類(lèi)丟失更新:提交(commit)一個(gè)事務(wù)時(shí),把其他事務(wù)已經(jīng)提交更新的數(shù)據(jù)給覆蓋掉了锉桑。

  • 不可重復(fù)讀(Non-Repeatable Reads)
    在事務(wù)A中排霉,按相同的條件執(zhí)行查詢過(guò)的sql,返回結(jié)果發(fā)生了修改或被刪除了民轴,這種現(xiàn)象叫做“不可重復(fù)讀”攻柠。

  • 幻讀(Phantom Reads)
    在事務(wù)A中,按相同的條件執(zhí)行查詢過(guò)的sql后裸,返回結(jié)果中有新數(shù)據(jù)(其他事務(wù)插入的數(shù)據(jù))瑰钮,就好像發(fā)生了幻覺(jué)一樣,被稱(chēng)為“幻讀”微驶。

四浪谴、事務(wù)的四種隔離級(jí)別

  • 讀未提交(Read Uncommitted, RU)
    當(dāng)前事務(wù)讀取了其他事務(wù)還未提交的數(shù)據(jù)。
    由于可能會(huì)造成臟讀因苹,所以實(shí)際中很少使用苟耻。

  • 讀已提交(Read Committed, RC)
    事務(wù)A修改并提交的數(shù)據(jù)才會(huì)對(duì)其他事務(wù)可見(jiàn),所以可以解決臟讀問(wèn)題扶檐。
    多數(shù)RDBMS的默認(rèn)隔離級(jí)別都是讀已提交凶杖,例如Oracle,PostgreSQL款筑,SqlServer智蝠,但Mysql不是。

  • 可重復(fù)讀(Repeatable Read, RR)
    在同一事務(wù)中多次讀取相同記錄的結(jié)果是一致的奈梳,所以解決了臟讀和不可重復(fù)讀的問(wèn)題杈湾,但未解決幻讀。

  • 串行化(Serializable)
    串行化是最高的隔離級(jí)別攘须,它通過(guò)強(qiáng)制事務(wù)串行執(zhí)行漆撞,避免了臟讀、不可重復(fù)讀阻课、幻讀問(wèn)題。
    簡(jiǎn)單來(lái)說(shuō)艰匙,串行化會(huì)在讀取的每一行數(shù)據(jù)上都加上鎖限煞,所以可能導(dǎo)致大量的超時(shí)和鎖征用問(wèn)題。
    實(shí)際應(yīng)用中也很少用到這個(gè)隔離級(jí)別员凝,只有在非常需要確保數(shù)據(jù)的一致性而且可以接受沒(méi)有并發(fā)的情況才考慮用該級(jí)別署驻。

總結(jié):
數(shù)據(jù)庫(kù)的事務(wù)隔離越嚴(yán)格,并發(fā)副作用越小,但付出的代價(jià)也就越大旺上。

查看當(dāng)前數(shù)據(jù)庫(kù)的事務(wù)隔離級(jí)別

mysql8中瓶蚂,記錄數(shù)據(jù)庫(kù)隔離級(jí)別的字段名稱(chēng)為 ‘transaction_isolation’,默認(rèn)級(jí)別為‘可重復(fù)讀’宣吱。
mysql5.7中窃这,記錄數(shù)據(jù)庫(kù)隔離級(jí)別的字段名稱(chēng)為 ‘tx_isolation’,查詢語(yǔ)句為select @@tx_isolation;


mysql8中事務(wù)默認(rèn)隔離級(jí)別.png

參考資料
一文搞定Mysql事務(wù)隔離級(jí)別與鎖機(jī)制
事務(wù)隔離機(jī)制 -- 必須說(shuō)透

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末征候,一起剝皮案震驚了整個(gè)濱河市杭攻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疤坝,老刑警劉巖兆解,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異跑揉,居然都是意外死亡锅睛,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)历谍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)现拒,“玉大人,你說(shuō)我怎么就攤上這事扮饶【吡罚” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵甜无,是天一觀的道長(zhǎng)扛点。 經(jīng)常有香客問(wèn)我,道長(zhǎng)岂丘,這世上最難降的妖魔是什么陵究? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮奥帘,結(jié)果婚禮上铜邮,老公的妹妹穿的比我還像新娘。我一直安慰自己寨蹋,他們只是感情好松蒜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著已旧,像睡著了一般秸苗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上运褪,一...
    開(kāi)封第一講書(shū)人閱讀 51,754評(píng)論 1 307
  • 那天惊楼,我揣著相機(jī)與錄音玖瘸,去河邊找鬼。 笑死檀咙,一個(gè)胖子當(dāng)著我的面吹牛雅倒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播弧可,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蔑匣,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了侣诺?” 一聲冷哼從身側(cè)響起殖演,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎年鸳,沒(méi)想到半個(gè)月后趴久,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡搔确,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年彼棍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膳算。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡座硕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出涕蜂,到底是詐尸還是另有隱情华匾,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布机隙,位于F島的核電站蜘拉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏有鹿。R本人自食惡果不足惜旭旭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望葱跋。 院中可真熱鬧持寄,春花似錦、人聲如沸娱俺。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)荠卷。三九已至模庐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間僵朗,已是汗流浹背赖欣。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留验庙,地道東北人顶吮。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像粪薛,于是被迫代替她去往敵國(guó)和親悴了。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

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