這篇文章主要介紹“MySQL中的insert undo log和update undo log的區(qū)別”,在日常操作中,相信很多人在mysql中的insert undo log和update undo log的區(qū)別問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”mysql中的insert undo log和update undo log的區(qū)別”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
成都創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)提供康樂(lè)企業(yè)網(wǎng)站建設(shè),專(zhuān)注與網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、HTML5建站、小程序制作等業(yè)務(wù)。10年已為康樂(lè)眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。
根據(jù)行為的不同,undo log分為兩種:insert undo log和update undo log
1、insert undo log,是在insert操作中產(chǎn)生的。insert操作的記錄只對(duì)事務(wù)本身可見(jiàn)。
對(duì)于其它事務(wù)此記錄是不可見(jiàn)的,所以 insert undo log 可以在事務(wù)提交后直接刪除而不需要進(jìn)行purge操作。
2、update undo log是update或delete操作中產(chǎn)生。
因?yàn)闀?huì)對(duì)已經(jīng)存在的記錄產(chǎn)生影響,為了提供 MVCC機(jī)制,因此 update undo log 不能在事務(wù)提交時(shí)就進(jìn)行刪除,而是將事務(wù)提交時(shí)放到入 history list 上,等待 purge 線程進(jìn)行最后的刪除操作
為了更好的支持并發(fā),InnoDB的多版本一致性讀是采用了基于回滾段的的方式。另外,對(duì)于更新和刪除操作,InnoDB并不是真正的刪除原來(lái)的記錄,而是設(shè)置記錄的delete mark為1。因此為了解決數(shù)據(jù)Page和Undo Log膨脹的問(wèn)題,需要引入purge機(jī)制進(jìn)行回收
為了保證事務(wù)并發(fā)操作時(shí),在寫(xiě)各自的undo log時(shí)不產(chǎn)生沖突,InnoDB采用回滾段的方式來(lái)維護(hù)undo log的并發(fā)寫(xiě)入和持久化?;貪L段實(shí)際上是一種 Undo 文件組織方式
到此,關(guān)于“mysql中的insert undo log和update undo log的區(qū)別”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!