MySQL系列事務(wù)日志Undo log學(xué)習(xí)筆記

      網(wǎng)友投稿 635 2022-05-29

      學(xué)習(xí)本博客之前需要儲(chǔ)備知識(shí):

      Mysql體系架構(gòu)

      InnoDB存儲(chǔ)引擎

      MySQL事務(wù)知識(shí)

      文章目錄

      1、Undo Log

      1.1、什么是Undo log?

      1.2、Undo log存儲(chǔ)方式

      1.3、Undo log的工作原理

      1.4、Undo log相關(guān)的變量

      1.5、Undo log作用說(shuō)明

      附錄:參考資料

      1、Undo Log

      1.1、什么是Undo log?

      Undo:意為撤銷或取消,undo即返回指定某個(gè)狀態(tài)的操作

      Undo日志:undo log是mysql中兩種比較重要的事務(wù)日志,另外一種是redo log,undo log顧名思義,是一種用于撤銷回退的日志,用于事務(wù)沒(méi)提交之前,會(huì)先記錄存放到 Undo 日志文件里,當(dāng)事務(wù)回滾時(shí)或者數(shù)據(jù)庫(kù)崩潰時(shí),可以利用 Undo 日志回退事務(wù)

      ps:undo log和redo log是InnoDB才支持的日志,是兩種比較重要的事務(wù)日志,在mysql存儲(chǔ)引擎中,InnoDB是支持事務(wù)的常用存儲(chǔ)引擎

      1.2、Undo log存儲(chǔ)方式

      Undo log的存儲(chǔ)由InnoDB存儲(chǔ)引擎實(shí)現(xiàn),數(shù)據(jù)保存在InnoDB的數(shù)據(jù)文件中,innodb存儲(chǔ)引擎對(duì)undo的管理采用段(segment)的方式,具體來(lái)說(shuō)是一種命名為回滾段(rollback segment)的數(shù)據(jù)結(jié)構(gòu)。

      回滾段(rollback segment)中有1024個(gè)undo log segment,以前舊版本只支持1個(gè)rollback segment,也即只能存儲(chǔ)1024個(gè)undo log segment,MySQL5.5版本之后,能支持128個(gè)rollback segment,也即128*1024個(gè)undo log segment

      1.3、Undo log的工作原理

      MySQL系列之事務(wù)日志Undo log學(xué)習(xí)筆記

      undo log在事務(wù)開(kāi)啟之前就產(chǎn)生,當(dāng)事務(wù)提交的時(shí)候,不會(huì)刪除undo log,因?yàn)榭赡苄枰猺ollback操作,要執(zhí)行回滾(rollback)操作時(shí),從緩存中讀取數(shù)據(jù)。InnoDB會(huì)將事務(wù)對(duì)應(yīng)的日志保存在刪除list中,后臺(tái)通過(guò)purge線程進(jìn)行回收處理

      ok,還是以一條sql執(zhí)行update、select過(guò)程,畫圖表示,圖例是自己所畫,圖例模仿網(wǎng)上課程ppt,如圖:

      執(zhí)行update操作,事務(wù)A提交時(shí)候(事務(wù)還沒(méi)提交),會(huì)將數(shù)據(jù)進(jìn)行備份,備份到對(duì)應(yīng)的undo buffer,Undo Log保存了未提交之前的操作日志,User表數(shù)據(jù)肯定就是持久保存到InnoDB的數(shù)據(jù)文件IBD,默認(rèn)情況。

      這時(shí)事務(wù)B進(jìn)行查詢操作,是直接讀undo buffer緩存的,這時(shí)事務(wù)A還沒(méi)提交事務(wù),要回滾(rollback),是不讀磁盤的,先直接從undo buffer緩存讀取

      ps:undo日志屬于邏輯日志,redo是物理日志,所謂邏輯日志是undo log是記錄一個(gè)操作過(guò)程,不會(huì)物理刪除undo log,sql執(zhí)行delete或者update操作都會(huì)記錄一條undo日志

      1.4、Undo log相關(guān)的變量

      musql -u root -p,登錄mysql客戶端,查詢undo相關(guān)參數(shù):(基于Mysql8版本)

      innodb_undo_directory:定義存儲(chǔ)的目錄路徑,默認(rèn)值./,表示datadir

      datadir參數(shù)可以通過(guò)設(shè)置my.ini配置文件:

      [mysql] # 設(shè)置mysql數(shù)據(jù)庫(kù)的數(shù)據(jù)的存放目錄 datadir="D:\mysql-8.0.13-winx64\data"

      1

      2

      3

      innodb_undo_log_truncate:參數(shù)設(shè)置為1,即開(kāi)啟在線回收(收縮)undo log日志文件,支持動(dòng)態(tài)設(shè)置,默認(rèn)是關(guān)閉的

      innodb_undo_logs:這個(gè)參數(shù)是指前面介紹的rollback segment的數(shù)量,Mysql5.5版本之后默認(rèn)設(shè)置為128

      innodb_undo_tablespaces:該變量默認(rèn)值為0,表示undo log全部寫入一個(gè)表空間文件,可以設(shè)置這個(gè)變量,平均分配到多少個(gè)文件中

      1.5、Undo log作用說(shuō)明

      實(shí)現(xiàn)事務(wù)的原子性

      undo log可以用于實(shí)現(xiàn)事務(wù)的原子性, 如果事務(wù)處理過(guò)程出現(xiàn)一些特殊情況,比如sql錯(cuò)誤等等情況,就要執(zhí)行回滾(rollback)操作,mysql就可以利用undo log將數(shù)據(jù)恢復(fù)到事務(wù)開(kāi)始之前

      實(shí)現(xiàn)多版本并發(fā)控制(MVCC)

      Undo Log 在 MySQL InnoDB 存儲(chǔ)引擎中用來(lái)實(shí)現(xiàn)多版本并發(fā)控制,事務(wù)沒(méi)提交之前,undo日志可以作為高并發(fā)情況下,其它并發(fā)事務(wù)進(jìn)行快照讀

      關(guān)于Redo log的可以參考我博客MySQL系列之事務(wù)日志redo log學(xué)習(xí)筆記

      附錄:參考資料

      https://www.cnblogs.com/f-ck-need-u/archive/2018/05/08/9010872.html

      MySQL SQL

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:Scala編程初級(jí)實(shí)踐
      下一篇:【云端大事件】智造家IMEfuture入駐華為云市場(chǎng),助力制造業(yè)數(shù)字化轉(zhuǎn)型
      相關(guān)文章
      亚洲国产精久久久久久久| 亚洲二区在线视频| 亚洲乱妇熟女爽到高潮的片 | 伊人久久综在合线亚洲2019| 国产亚洲精品成人AA片| 亚洲成人动漫在线观看| 亚洲成AV人片在| 在线亚洲精品视频| 亚洲无吗在线视频| 亚洲av极品无码专区在线观看| 亚洲中文字幕无码av在线| 亚洲男女一区二区三区| 亚洲欧洲日产国码在线观看| 亚洲精品熟女国产| 亚洲制服丝袜在线播放| 久久精品国产亚洲AV网站| 久久亚洲精品成人777大小说| 亚洲av无码乱码国产精品| 亚洲国产成人久久精品影视| 久久亚洲伊人中字综合精品| 亚洲国产成人私人影院| 亚洲美女一区二区三区| 亚洲午夜一区二区电影院| 亚洲看片无码在线视频| 亚洲精品无码不卡在线播放| 苍井空亚洲精品AA片在线播放| 日本中文一区二区三区亚洲 | 亚洲熟妇无码乱子AV电影| 亚洲av无码一区二区三区网站| 久久精品国产亚洲香蕉| 亚洲美女视频网站| 亚洲av一本岛在线播放| 亚洲日韩精品无码专区| 成a人片亚洲日本久久| MM131亚洲国产美女久久 | 亚洲国产成人高清在线观看 | 亚洲?V乱码久久精品蜜桃 | 亚洲无av在线中文字幕| 亚洲国产精品线在线观看| 亚洲午夜精品在线| 亚洲av永久中文无码精品综合|