mysql數(shù)據(jù)庫事務(wù)隔離級別

這幾天在開發(fā)過程中遇到一個很棘手的問題,兩個不同應(yīng)用環(huán)境中同一塊代碼產(chǎn)生兩種不同的現(xiàn)象租漂,有兩個事務(wù)理盆,第一個事務(wù)進(jìn)行修改操作并且提交事務(wù)俯抖,第二個事務(wù)進(jìn)行查詢输瓜,但查詢到的是修改前的數(shù)據(jù),剛開始以為是Mybatis一級緩存造成的蚌成,但是通過修改sql排除了緩存這種情況前痘,后面確認(rèn)是數(shù)據(jù)庫的事務(wù)隔離級別導(dǎo)致的,因?yàn)閮蓚€數(shù)據(jù)庫的事務(wù)隔離級別分別是:read committed担忧、repeatable read芹缔,隔離級別是repeatable read的會出現(xiàn)上述情況,下面通過對比例子詳細(xì)介紹下:

Mysql數(shù)據(jù)庫的事務(wù)隔離級別

1瓶盛、read uncommitted(讀未提交)

?可以讀取到未提交的數(shù)據(jù)最欠,如果事務(wù)A進(jìn)行修改操作并沒有進(jìn)行提交,但是事務(wù)B就已經(jīng)會讀取到修改后的新數(shù)據(jù)惩猫,這時如果事務(wù)A因?yàn)槟撤N原因回滾芝硬,但是事務(wù)B不會回滾,讀取到的還是修改后的數(shù)據(jù)轧房,因此這種事務(wù)級別會產(chǎn)生大量的臟數(shù)據(jù)? ? ? ? ? ??

2拌阴、read committed(讀已提交)

mysql默認(rèn)的事務(wù)隔離級別,這種事務(wù)級別不會讀取到臟數(shù)據(jù)奶镶,相對于read uncommitted級別迟赃,它在A事務(wù)修改操做未提交之前,事務(wù)B讀取到的是修改前的數(shù)據(jù)厂镇,只有當(dāng)A事務(wù)提交之后纤壁,事務(wù)B讀取的才是修改后的數(shù)據(jù)

3、repeatable read (可重復(fù)讀)

這種事務(wù)隔離級別相對于read committed事務(wù)隔離級別會產(chǎn)生這種現(xiàn)象捺信,如果事務(wù)B之前執(zhí)行過查詢語句酌媒,當(dāng)A事務(wù)修改操作提交之后,事務(wù)B查詢讀取到的仍是修改前的數(shù)據(jù),這一現(xiàn)象說明秒咨,如果事務(wù)B之前執(zhí)行過相同的sql語句喇辽,下次執(zhí)行同樣的sql,不管事務(wù)A做了什么操作雨席,事務(wù)B會重復(fù)讀取原有的數(shù)據(jù)結(jié)果茵臭;如果開啟的事務(wù)B首先不做任何查詢操作,當(dāng)A事務(wù)的修改操作提交之后舅世,這時事務(wù)B才會查詢到修改后的數(shù)據(jù)

4、serializable(串行化)

這種事務(wù)隔離級別是最高的級別奇徒,只有當(dāng)事務(wù)A的寫操作執(zhí)行完之后雏亚,事務(wù)B才能進(jìn)行寫操作,但是讀操作是可以正常進(jìn)行的摩钙,這就相當(dāng)于給這條操作的數(shù)據(jù)加了鎖

事務(wù)隔離級別的基本操作

1罢低、查看當(dāng)前會話的事務(wù)隔離級別

? ? ?select @@tx_isolation

2、查看系統(tǒng)的事務(wù)隔離級別

? ? ?select @@global.tx_isolation

3胖笛、設(shè)置當(dāng)前會話的事務(wù)隔離級別

? ? ?set session transaction isolation level 事務(wù)隔級別

4网持、設(shè)置系統(tǒng)的事務(wù)隔離級別

? ? ?set global transaction isolation level 事務(wù)隔離級別

本地測試驗(yàn)證

一共有四種事務(wù)隔離級別,這里只針對于開發(fā)過程中遇到的由于read committed长踊、repeatable read這種兩種隔離級別導(dǎo)致的問題進(jìn)行本地的驗(yàn)證

1功舀、read committed (讀已提交)

(1)、打開兩個mysql數(shù)據(jù)庫客戶端A身弊、B辟汰,因?yàn)槟J(rèn)是read committed級別,所以不需要設(shè)置阱佛,兩個客戶端開啟事務(wù)A帖汞、B,并執(zhí)行查詢語句

圖1

?(2)凑术、在事務(wù)A中進(jìn)行修改操作翩蘸,不要提交,事務(wù)A中查詢結(jié)果已修改淮逊,但是事務(wù)B中查詢到的是修改前的數(shù)據(jù)催首,兩個客戶端查詢結(jié)果

圖2

(3)、事務(wù)A進(jìn)行提交壮莹,事務(wù)B查詢到的是修改后的數(shù)據(jù)

圖3

2翅帜、repeatable read(可重復(fù)讀)

(1)、設(shè)置系統(tǒng)的事務(wù)隔離級別為:repeatable read

圖4

(2)命满、開啟事務(wù)A涝滴、B,并且執(zhí)行同樣的查詢語句

圖5

(3)、事務(wù)A中進(jìn)行修改操作歼疮,并且提交杂抽,在事務(wù)B中執(zhí)行查詢語句,查詢到是卻還是修改前的數(shù)據(jù)韩脏,因此這種事務(wù)會導(dǎo)致:如果執(zhí)行相同的查詢語句缩麸,則不管事務(wù)A做了什么操作,則會重復(fù)讀取原來讀取數(shù)據(jù)

圖6

(4)赡矢、如果在上面步驟二中杭朱,事務(wù)A中進(jìn)行查詢,然后進(jìn)行修改提交吹散,事務(wù)B開啟事務(wù)后先不進(jìn)行查詢弧械,等事務(wù)A的修改操作提交之后,事務(wù)B再進(jìn)行查詢操作空民,則查詢到的是修改后的數(shù)據(jù)

圖7

測試結(jié)論

1刃唐、read committed (讀已提交)這種事務(wù)隔離級別,不管事務(wù)A做什么操作界轩,只有當(dāng)事務(wù)A提交之后画饥,事務(wù)B才會讀取到新的數(shù)據(jù),如果事務(wù)A不提交浊猾,則事務(wù)B不會讀取到新數(shù)據(jù)

2抖甘、repeatable read(可重復(fù)讀)這種事務(wù)隔離級別,如果事務(wù)B在事務(wù)A提交之前做了查詢操作葫慎,然后不管事務(wù)A做了什么操作并且提交后单山,事務(wù)B如果執(zhí)行同樣的查詢語句,則不會讀取到修改后的新數(shù)據(jù)幅疼,會一直重復(fù)讀取剛開始事務(wù)B讀取的數(shù)據(jù)米奸;如果事務(wù)B在事務(wù)A提交之前不做任何查詢操作,則不管事務(wù)A做了什么操作并且提交后爽篷,事務(wù)B查詢到的才是修改后的新數(shù)據(jù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末悴晰,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子逐工,更是在濱河造成了極大的恐慌铡溪,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泪喊,死亡現(xiàn)場離奇詭異棕硫,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)袒啼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門哈扮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纬纪,“玉大人,你說我怎么就攤上這事滑肉“鳎” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵靶庙,是天一觀的道長问畅。 經(jīng)常有香客問我,道長六荒,這世上最難降的妖魔是什么护姆? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮掏击,結(jié)果婚禮上签则,老公的妹妹穿的比我還像新娘。我一直安慰自己铐料,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布豺旬。 她就那樣靜靜地躺著钠惩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪族阅。 梳的紋絲不亂的頭發(fā)上篓跛,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天,我揣著相機(jī)與錄音坦刀,去河邊找鬼愧沟。 笑死,一個胖子當(dāng)著我的面吹牛鲤遥,可吹牛的內(nèi)容都是我干的沐寺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼盖奈,長吁一口氣:“原來是場噩夢啊……” “哼混坞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起钢坦,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤究孕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后爹凹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體厨诸,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年禾酱,在試婚紗的時候發(fā)現(xiàn)自己被綠了微酬。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绘趋。...
    茶點(diǎn)故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖得封,靈堂內(nèi)的尸體忽然破棺而出埋心,到底是詐尸還是另有隱情,我是刑警寧澤忙上,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布拷呆,位于F島的核電站,受9級特大地震影響疫粥,放射性物質(zhì)發(fā)生泄漏茬斧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一梗逮、第九天 我趴在偏房一處隱蔽的房頂上張望项秉。 院中可真熱鬧,春花似錦慷彤、人聲如沸娄蔼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽岁诉。三九已至,卻和暖如春跋选,著一層夾襖步出監(jiān)牢的瞬間涕癣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工前标, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坠韩,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓炼列,卻偏偏與公主長得像只搁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子俭尖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評論 2 354