閑聊Mysql的事務隔離

前言

? ? ????Mysql是一種關系型數據庫被被大家廣泛的使用百炬,而當它在高并發(fā)的情況下具钥,會產生一些臟讀、不可重復讀诊杆、幻讀等問題歼捐,可能網上博客介紹這種問題的文章也是遍地都是,但是還是想寫一篇加深印象和總結一下晨汹。

事務的特性

事務4大特性(ACID) :原子性豹储、一致性、隔離性淘这、持久性剥扣。

原子性:事務中的全部操作在數據庫中是不可分割的,要么全部完成铝穷,要么均不執(zhí)行.

一致性:幾個并行執(zhí)行的事務钠怯,其執(zhí)行結果必須與按某一順序串行執(zhí)行的結果相一致。

隔離性:事務的執(zhí)行不受其他事務的干擾曙聂,當數據庫被多個客戶端并發(fā)訪問時晦炊,隔離它們的操作,防止出現:臟讀宁脊、幻讀断国、不可重復讀。

持久性:對于任意已提交事務榆苞,系統(tǒng)必須保證該事務對數據庫的改變不被丟失稳衬。

事務的隔離級別

READ UNCOMMITTED:可以讀取未提交的數據,未提交的數據稱之為臟數據又稱之為臟讀坐漏,在RU模式下幻讀薄疚、不可重復讀和臟讀都是被允許的碧信。

READ COMMITTED:只能讀取已經提交的數據,幻讀和不可重復讀被允許街夭,不允許臟讀砰碴,RC級別解決了臟讀問題。

REPEATABLE READ:同一個事務中多次執(zhí)行同一個select讀取到的數據沒有變化(這時候就是解決了不可重復讀不可重復讀僅限于查詢)板丽,RR級別解決了不可重復讀衣式,但有幻讀的問題。

SERIALIZABLE:串行化在這個級別下幻讀、不可重復讀、臟讀都是不被允許的盈咳。

????????看起來是不是只要選擇串行化級別轰枝,什么異常讀取都不會發(fā)生,但是串行級別下會造成性能下降,串行化它會導致表級鎖,對所有的記錄都不能修改,而且不支持多個事務同時對一張表進行修改荧飞,查詢時沒問題的。

實踐環(huán)境

實踐mysql版本5.7.25名党,存儲引擎Innodb

RR級別的幻讀實踐

????????mysql設置當前會話的隔離級別為RR叹阔,set session transaction isolation level REPEATABLE READ

????????當第二個事務提交后,在第一個事務中是查詢不到id_text為2的數據传睹,但是在第一個事務中插入id_text為2的時候報主鍵重復異常耳幢,這就叫幻讀,明顯查詢不到但是修改時候卻告訴我數據存在欧啤。

????????這個級別下是不存在不可重復讀取的睛藻,可以驗證第三步和第五步查詢的數據是一致的,如果是不一致的將有不可重復讀的問題邢隧。

RU級別的臟讀實踐

????????mysql設置當前會話的隔離級別為RU店印,set session transaction isolation level READ UNCOMMITTED

????????要說mysql隔離級別哪種最可怕無非就是RU,因為它可以讀取別人未提交的數據簡稱臟讀倒慧,如果第一個事務正常的提交不出任何問題按摘,可能會正常,但是假如我進行Rollback操作纫谅,事務二讀取出來的數據就是臟數據炫贤,將會影響業(yè)務操作會造成意想不到的災難。

RC級別的不可重復讀實踐

????????mysql設置當前會話的隔離級別為RU系宜,set session transaction isolation level READ COMMITTED

????????不可重復讀的表現在同一個事務中照激,兩個相同的插敘語句查詢出來的數據不一致发魄,這是因為兩個查詢語句中間包含了其他事務的修改數據提交盹牧,導致第一次和第二次查詢數據不一致俩垃,它和臟讀的區(qū)別就是,它讀取的數據必須是事務執(zhí)行成功后的數據汰寓,而臟讀是讀取事務還沒進行提交的數據口柳。

????????在第六步和第八步就證明了臟讀和不可重復讀的區(qū)別,如果是臟讀第六步查詢出來的數據與第四步查詢的數據就不一致有滑。

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末跃闹,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子毛好,更是在濱河造成了極大的恐慌望艺,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件肌访,死亡現場離奇詭異找默,居然都是意外死亡,警方通過查閱死者的電腦和手機吼驶,發(fā)現死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門惩激,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蟹演,你說我怎么就攤上這事风钻。” “怎么了酒请?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵骡技,是天一觀的道長。 經常有香客問我羞反,道長哮兰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任苟弛,我火速辦了婚禮喝滞,結果婚禮上,老公的妹妹穿的比我還像新娘膏秫。我一直安慰自己右遭,他們只是感情好,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布缤削。 她就那樣靜靜地躺著窘哈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪亭敢。 梳的紋絲不亂的頭發(fā)上滚婉,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天,我揣著相機與錄音帅刀,去河邊找鬼让腹。 笑死远剩,一個胖子當著我的面吹牛,可吹牛的內容都是我干的骇窍。 我是一名探鬼主播瓜晤,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼腹纳!你這毒婦竟也來了痢掠?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤嘲恍,失蹤者是張志新(化名)和其女友劉穎足画,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體佃牛,經...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡锌云,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了吁脱。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片桑涎。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖兼贡,靈堂內的尸體忽然破棺而出攻冷,到底是詐尸還是另有隱情,我是刑警寧澤遍希,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布等曼,位于F島的核電站,受9級特大地震影響凿蒜,放射性物質發(fā)生泄漏禁谦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一废封、第九天 我趴在偏房一處隱蔽的房頂上張望州泊。 院中可真熱鬧,春花似錦漂洋、人聲如沸遥皂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽演训。三九已至,卻和暖如春贝咙,著一層夾襖步出監(jiān)牢的瞬間样悟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留窟她,地道東北人陈症。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像礁苗,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子徙缴,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355