【精】數(shù)據(jù)庫事務(wù)的隔離級別通俗化闡述

數(shù)據(jù)庫事務(wù)的隔離級別有4種蛆楞,由低到高分別為Read uncommitted 也物、Read committed 、Repeatable read 澡绩、Serializable 稽揭。而且,在事務(wù)的并發(fā)操作中可能會出現(xiàn)臟讀肥卡,不可重復(fù)讀溪掀,幻讀。下面通過事例一一闡述它們的概念與聯(lián)系步鉴。

Read uncommitted

讀未提交揪胃,顧名思義,就是一個事務(wù)可以讀取另一個未提交事務(wù)的數(shù)據(jù)氛琢。

事例:老板要給程序員發(fā)工資喊递,程序員的工資是3.6萬/月。但是發(fā)工資時老板不小心按錯了數(shù)字阳似,按成3.9萬/月册舞,該錢已經(jīng)打到程序員的戶口,但是事務(wù)還沒有提交障般,就在這時调鲸,程序員去查看自己這個月的工資,發(fā)現(xiàn)比往常多了3千元挽荡,以為漲工資了非常高興藐石。但是老板及時發(fā)現(xiàn)了不對,馬上回滾差點(diǎn)就提交了的事務(wù)定拟,將數(shù)字改成3.6萬再提交于微。

分析:實際程序員這個月的工資還是3.6萬,但是程序員看到的是3.9萬青自。他看到的是老板還沒提交事務(wù)時的數(shù)據(jù)株依。這就是臟讀。

那怎么解決臟讀呢延窜?Read committed恋腕!讀提交,能解決臟讀問題逆瑞。

Read committed (修改時候不允許讀)

讀提交荠藤,顧名思義伙单,就是一個事務(wù)要等另一個事務(wù)提交后才能讀取數(shù)據(jù)。

事例:程序員拿著信用卡去享受生活(卡里當(dāng)然是只有3.6萬)哈肖,當(dāng)他埋單時(程序員事務(wù)開啟)吻育,收費(fèi)系統(tǒng)事先檢測到他的卡里有3.6萬,就在這個時候S倬布疼!程序員的妻子要把錢全部轉(zhuǎn)出充當(dāng)家用,并提交币狠。當(dāng)收費(fèi)系統(tǒng)準(zhǔn)備扣款時缎除,再檢測卡里的金額,發(fā)現(xiàn)已經(jīng)沒錢了(第二次檢測金額當(dāng)然要等待妻子轉(zhuǎn)出金額事務(wù)提交完)总寻。程序員就會很郁悶器罐,明明卡里是有錢的…

分析:這就是讀提交,若有事務(wù)對數(shù)據(jù)進(jìn)行更新(UPDATE)操作時渐行,讀操作事務(wù)要等待這個更新操作事務(wù)提交后才能讀取數(shù)據(jù)轰坊,可以解決臟讀問題。但在這個事例中祟印,出現(xiàn)了一個事務(wù)范圍內(nèi)兩個相同的查詢卻返回了不同數(shù)據(jù)肴沫,這就是不可重復(fù)讀。

那怎么解決可能的不可重復(fù)讀問題蕴忆?Repeatable read 颤芬!

Repeatable read (讀的時候不允許修改)

重復(fù)讀,就是在開始讀取數(shù)據(jù)(事務(wù)開啟)時套鹅,不再允許修改操作

事例:程序員拿著信用卡去享受生活(卡里當(dāng)然是只有3.6萬)站蝠,當(dāng)他埋單時(事務(wù)開啟,不允許其他事務(wù)的UPDATE修改操作)卓鹿,收費(fèi)系統(tǒng)事先檢測到他的卡里有3.6萬菱魔。這個時候他的妻子不能轉(zhuǎn)出金額了。接下來收費(fèi)系統(tǒng)就可以扣款了吟孙。

分析:重復(fù)讀可以解決不可重復(fù)讀問題澜倦。寫到這里,應(yīng)該明白的一點(diǎn)就是杰妓,不可重復(fù)讀對應(yīng)的是修改藻治,即UPDATE操作。但是可能還會有幻讀問題巷挥。因為幻讀問題對應(yīng)的是插入INSERT操作桩卵,而不是UPDATE操作。

什么時候會出現(xiàn)幻讀?

事例:程序員某一天去消費(fèi)吸占,花了2千元晴叨,然后他的妻子去查看他今天的消費(fèi)記錄(全表掃描FTS凿宾,妻子事務(wù)開啟)矾屯,看到確實是花了2千元,就在這個時候初厚,程序員花了1萬買了一部電腦件蚕,即新增INSERT了一條消費(fèi)記錄,并提交产禾。當(dāng)妻子打印程序員的消費(fèi)記錄清單時(妻子事務(wù)提交)排作,發(fā)現(xiàn)花了1.2萬元,似乎出現(xiàn)了幻覺亚情,這就是幻讀妄痪。

那怎么解決幻讀問題?Serializable楞件!

Serializable 序列化 (讀的時候不允許修改插入)

Serializable 是最高的事務(wù)隔離級別衫生,在該級別下,事務(wù)串行化順序執(zhí)行土浸,可以避免臟讀罪针、不可重復(fù)讀與幻讀。但是這種事務(wù)隔離級別效率低下黄伊,比較耗數(shù)據(jù)庫性能泪酱,一般不使用。

值得一提的是:大多數(shù)數(shù)據(jù)庫默認(rèn)的事務(wù)隔離級別是Read committed还最,比如Sql Server , Oracle墓阀。Mysql的默認(rèn)隔離級別是Repeatable read。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拓轻,一起剝皮案震驚了整個濱河市岂津,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌悦即,老刑警劉巖吮成,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異辜梳,居然都是意外死亡粱甫,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進(jìn)店門作瞄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茶宵,“玉大人,你說我怎么就攤上這事宗挥∥谑” “怎么了种蝶?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長瞒大。 經(jīng)常有香客問我螃征,道長,這世上最難降的妖魔是什么透敌? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任盯滚,我火速辦了婚禮,結(jié)果婚禮上酗电,老公的妹妹穿的比我還像新娘魄藕。我一直安慰自己,他們只是感情好撵术,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布背率。 她就那樣靜靜地躺著,像睡著了一般嫩与。 火紅的嫁衣襯著肌膚如雪寝姿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天蕴纳,我揣著相機(jī)與錄音会油,去河邊找鬼。 笑死古毛,一個胖子當(dāng)著我的面吹牛翻翩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播稻薇,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼嫂冻,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了塞椎?” 一聲冷哼從身側(cè)響起桨仿,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎案狠,沒想到半個月后服傍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡骂铁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年吹零,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拉庵。...
    茶點(diǎn)故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡灿椅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情茫蛹,我是刑警寧澤操刀,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站婴洼,受9級特大地震影響骨坑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜窃蹋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一卡啰、第九天 我趴在偏房一處隱蔽的房頂上張望静稻。 院中可真熱鬧警没,春花似錦、人聲如沸振湾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽押搪。三九已至树酪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間大州,已是汗流浹背续语。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留厦画,地道東北人疮茄。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像根暑,于是被迫代替她去往敵國和親力试。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評論 2 348

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