事務 2020-12-28

  1. 數據庫通常借助日志來實現事務酝掩,常見的有undo log、redo log眷柔,undo/redo log都能保證事務特性期虾,這里主要是原子性和持久性,即事務相關的操作驯嘱,要么全做镶苞,要么不做,并且修改的數據能得到持久化

  2. redo log(重做日志/物理日志):提供前滾操作(commit之后一定會被寫入磁盤),保證事務的持久性

  3. undo log(回退日志/邏輯日志) :提供回滾操作(rollback 時能回到事務執(zhí)行之前),保證事務的一致性

捕獲.PNG
  1. redo log 和 undo log 是保證本地事務的鞠评,bin log 是用于主從復制的


捕獲1.PNG
捕獲2.PNG
  1. MVCC: 讀不加鎖茂蚓,讀寫不沖突 事務版本號

    1. 會保存某個時間點上的數據快照。這意味著事務可以看到一個一致的數據視圖剃幌,不管他們需要跑多久聋涨。這同時也意味著不同的[事務]在同一個時間點看到的同一個表的數據可能是不同的(讀寫排斥問題): 讀取版本控制中的歷史數據

    2. 在 READ COMMITTED 和 REPEATABLE READ 隔離等級之下才會使用 MVCC

    3. 可重復讀事務隔離級別下,對于快照數據负乡,非鎖定一致讀總是讀取事務開始時的行數據版本

    4. READ COMMITED 事務隔離級別下牍白,總是讀取最新的快照數據

    5. update語句中的where查詢 語句 讀取的都是最新的快照數據抖棘,最新的提交數據(無論在RR級別還是在RC級別都是這樣的機制)

    6. select語句中的where查詢語句(不加 共享鎖或排他鎖的情況下)RR級別下在同一個事務中茂腥,讀到的數據是事務剛開始是的快照數據(不會幻讀,同一查詢語句在同一事務中得到結果相同)或者是在本事務中對數據進行的最新修改切省,RC級別下最岗,同一個事務中讀到的是當前最新的快照版本數據(其它事務對這數據已提交的修改,會出現幻讀)或者是在本事務中對數據進行的最新修改朝捆。

    7. update語句相當于獲取排他鎖般渡,未獲得鎖的事務只能等待。

捕獲3.PNG

ReadView(快照):

  • 在innodb中(默認repeatable read級別), 事務在begin/start transaction之后的第一條select讀操作后, 會創(chuàng)建一個快照(read view), 將當前系統(tǒng)中活躍的其他事務記錄記錄起來;

  • 在innodb中(默認repeatable committed級別), 事務中每條select語句都會創(chuàng)建一個快照(read view)

    MVCC 存在的問題: 讀取舊版本數據,并以此來更新數據,導致更新丟失: 寫寫沖突問題

  1. 行鎖:只有通過索引條件檢索數據芙盘,InnoDB才使用行級鎖驯用,否則,InnoDB將使用表鎖何陆!

    1. 事務級行鎖: 執(zhí)行更新語句時加鎖,事務結束時解鎖

    2. 可重復讀的MVCC機制: 事務內兩次相同讀取的版本號一致

    3. 事務可能讀到的數據不是最新的,需保證只有是最新的數據才能被更新:MVCC+鎖

      可重復讀級別下: mvcc 快照讀取的可能為舊數據,以舊數據進行更新時,更新操作會獲取到當前讀新數據,只需要保證新舊數據版本號一致才能更新,即可避免更新丟失問題,簡單來說:不提供舊版本數據的寫操作

      可重復讀的底層原理: 排它鎖+MVCC 避免了第二類更新丟失問題

     //查詢語句 + 排他鎖 :  一個事務內先查詢后更新,可以通過這個方法簡單實現互斥
      select * from demo where id = 1 for update;
    
  2. 間隙鎖機制:幻讀 next-key鎖其實包含了記錄鎖和間隙鎖晨汹,即鎖定一個范圍,并且鎖定記錄本身贷盲,InnoDB默認加鎖方式是next-key 鎖


?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末淘这,一起剝皮案震驚了整個濱河市剥扣,隨后出現的幾起案子,更是在濱河造成了極大的恐慌铝穷,老刑警劉巖钠怯,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異曙聂,居然都是意外死亡晦炊,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門宁脊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來断国,“玉大人,你說我怎么就攤上這事榆苞∥瘸模” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵坐漏,是天一觀的道長薄疚。 經常有香客問我,道長赊琳,這世上最難降的妖魔是什么街夭? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮躏筏,結果婚禮上板丽,老公的妹妹穿的比我還像新娘。我一直安慰自己寸士,他們只是感情好檐什,可當我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布碴卧。 她就那樣靜靜地躺著弱卡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪住册。 梳的紋絲不亂的頭發(fā)上婶博,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機與錄音荧飞,去河邊找鬼凡人。 笑死,一個胖子當著我的面吹牛叹阔,可吹牛的內容都是我干的挠轴。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼耳幢,長吁一口氣:“原來是場噩夢啊……” “哼岸晦!你這毒婦竟也來了欧啤?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤启上,失蹤者是張志新(化名)和其女友劉穎邢隧,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體冈在,經...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡倒慧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了包券。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纫谅。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖溅固,靈堂內的尸體忽然破棺而出系宜,到底是詐尸還是另有隱情,我是刑警寧澤发魄,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布盹牧,位于F島的核電站,受9級特大地震影響励幼,放射性物質發(fā)生泄漏汰寓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一苹粟、第九天 我趴在偏房一處隱蔽的房頂上張望有滑。 院中可真熱鬧,春花似錦嵌削、人聲如沸毛好。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肌访。三九已至,卻和暖如春艇劫,著一層夾襖步出監(jiān)牢的瞬間吼驶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工店煞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蟹演,地道東北人。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓顷蟀,卻偏偏與公主長得像酒请,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子鸣个,可洞房花燭夜當晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內容

  • 1 事務介紹 在MySQL中的事務是由存儲引擎實現的羞反,而且支持事務的存儲引擎不多哮兰,我們主要講解InnoDB存儲引...
    MiniSoulBigBang閱讀 598評論 0 3
  • 最近在研究分布式數據庫相關的技術,對于數據庫來說苟弛,不管是單機數據庫還是分布式數據庫喝滞,事務都是一個繞不去的坎。不光是...
    elvinyang閱讀 1,374評論 0 2
  • 久違的晴天膏秫,家長會右遭。 家長大會開好到教室時,離放學已經沒多少時間了缤削。班主任說已經安排了三個家長分享經驗窘哈。 放學鈴聲...
    飄雪兒5閱讀 7,523評論 16 22
  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友亭敢。感恩相遇滚婉!感恩不離不棄。 中午開了第一次的黨會帅刀,身份的轉變要...
    迷月閃星情閱讀 10,567評論 0 11
  • 可愛進取让腹,孤獨成精。努力飛翔扣溺,天堂翱翔骇窍。戰(zhàn)爭美好,孤獨進取锥余。膽大飛翔腹纳,成就輝煌。努力進取驱犹,遙望嘲恍,和諧家園⌒劬裕可愛游走...
    趙原野閱讀 2,729評論 1 1