欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL中的undo日志

 更新時間:2020年11月10日 17:17:16   作者:AsiaYe  
這篇文章主要介紹了MySQL中的undo日志的相關資料,幫助大家更好的理解和學習MySQL的相關知識,感興趣的朋友可以了解下

概念介紹:

我們知道,MySQL中的redo日志記錄了事務的行為,在服務器宕機的時候,可以通過重做事務來達到恢復數(shù)據(jù)的目的,然而,有的時候,事務還有回滾的需求,也就是說,我們需要知道某條在變成當前情況之前的樣子,這種情況下,undo日志就派上用場了。也就是說,undo日志是為了將數(shù)據(jù)恢復到修改之前的樣子,因此在對數(shù)據(jù)庫進行修改的時候,我們需要知道,這個過程中會產(chǎn)生redo日志和undo日志。

存儲位置:

我們還知道,redo日志一般情況下放在redo日志文件中,也就是常說的ib_log中,而undo日志存放在數(shù)據(jù)庫內(nèi)部的一個"段"中,這個概念,我們在8月21號的文章中有講過,忘記的同學可以回去看看,undo日志的段位于共享表空間內(nèi)。

回滾操作:

現(xiàn)在,我們已經(jīng)知道了undo的概念,其實就是共享表空間中的一塊區(qū)域,它的主要作用是將事務恢復到執(zhí)行修改之前的樣子,但是,恢復的情況一般分為兩種,一種是邏輯恢復,一種是物理恢復,這里需要非常強調(diào)的是,undo的恢復是邏輯恢復,也就是說,如果你插入了100w條數(shù)據(jù),導致innodb分配了一個新的數(shù)據(jù)頁來存儲這些數(shù)據(jù),那么在事務進行回滾的時候,undo的功能并不是回收這個數(shù)據(jù)頁,而是將這些insert的操作,改變成delete的操作從而執(zhí)行回滾。在這個過程中,共享表空間的大小并不會發(fā)生改變。除此之外,undo日志會將delete操作轉化為insert操作,update操作轉化為反向的update操作。

刪除方式:

還有一點需要注意,事務共享表空間中寫入undo日志的過程同樣需要寫入redo日志,事務一旦提交,也就意味著事務的持久性生效,那么undo日志則不被需要,但是innodb并不會把這個undo日志直接刪除,而是放在一個undo日志的鏈表中,到底什么時候刪除取決于mysql的purge線程,這樣做是為了避免其他的事務需要通過undo日志來得到這條記錄之前的版本。

空間分配:

在實際操作中,一個數(shù)據(jù)庫實例上可能會進行很多事務,如果我們?yōu)槊恳粋€事務都分配單獨的日志數(shù)據(jù)頁來保存undo將會非常的浪費存儲空間,我們簡單算一算,假設一個應用的TPS為1000,為每個事務分配一個undo頁,我們之后到一個數(shù)據(jù)頁的大小是16kb,1分鐘將會產(chǎn)生60*1000個數(shù)據(jù)頁,那么一分鐘大約需要的空間就是960M的磁盤空間,這樣顯然是不合理的,因此,在innodb中,對于undo頁可以進行重用,具體的方法是,事務提交的時候,現(xiàn)將undo頁放入鏈表中,然后判斷這個undo頁的使用空間是否小于75%,如果是的話,那么這個undo頁就可以被重用,之后的undo日志就可以追加在當前undo日志的后面。當然,我們可以通過show engine innodb status來查看鏈表中undo log 的數(shù)量,這里不做演示了。

以上就是MySQL中的undo日志的詳細內(nèi)容,更多關于MySQL undo日志的資料請關注腳本之家其它相關文章!

相關文章

  • CentOS7.5 安裝MySql的教程

    CentOS7.5 安裝MySql的教程

    這篇文章主要介紹了CentOS7.5 安裝MySql的教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Mysql系列SQL查詢語句書寫順序及執(zhí)行順序詳解

    Mysql系列SQL查詢語句書寫順序及執(zhí)行順序詳解

    這篇文章主要為大家介紹了Mysql系列SQL查詢語句的書寫順序及執(zhí)行順序示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-10-10
  • 淺談一下MyISAM和InnoDB存儲引擎的區(qū)別

    淺談一下MyISAM和InnoDB存儲引擎的區(qū)別

    這篇文章主要介紹了MyISAM和InnoDB存儲引擎的區(qū)別,存儲引擎是MySQL中特有的一個術語,其它數(shù)據(jù)庫中沒有,實際上存儲引擎是一個表存儲/組織數(shù)據(jù)的方式,今天就跟小編來看看MyISAM和InnoDB存儲引擎的區(qū)別,需要的朋友可以參考下
    2023-04-04
  • MySQL數(shù)據(jù)庫主從復制延時超長的解決方法

    MySQL數(shù)據(jù)庫主從復制延時超長的解決方法

    這篇文章主要給大家介紹了關于MySQL數(shù)據(jù)庫主從復制延時超長的解決方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用MySQL具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-06-06
  • SQL計算timestamp的差值的方法

    SQL計算timestamp的差值的方法

    這篇文章主要介紹了SQL計算timestamp的差值的方法的相關資料,需要的朋友可以參考下
    2017-05-05
  • 解決Mysql數(shù)據(jù)庫插入數(shù)據(jù)出現(xiàn)問號(?)的解決辦法

    解決Mysql數(shù)據(jù)庫插入數(shù)據(jù)出現(xiàn)問號(?)的解決辦法

    這篇文章主要介紹了解決Mysql數(shù)據(jù)庫插入數(shù)據(jù)出現(xiàn)問號(?)的解決辦法的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-07-07
  • 通過yum方式安裝mySql數(shù)據(jù)庫的全過程

    通過yum方式安裝mySql數(shù)據(jù)庫的全過程

    當工作需要部署mysql時,通過手動上傳安裝包以及依賴包的方式安裝mysql會比較麻煩,可以添加官方y(tǒng)um源,來實現(xiàn)自動安裝依賴,方便快捷,下面這篇文章主要給大家介紹了關于通過yum方式安裝mySql數(shù)據(jù)庫的相關資料,需要的朋友可以參考下
    2022-07-07
  • windows 64位下mysql 8.0.13 安裝配置方法圖文教程

    windows 64位下mysql 8.0.13 安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了windows 64位下mysql 8.0.13 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • mysql技巧之select count的區(qū)別分析

    mysql技巧之select count的區(qū)別分析

    在工作過程中,時不時會有開發(fā)咨詢幾種select count()的區(qū)別,我總會告訴他們使用select count(*) 就好。下文我會展示幾種sql的執(zhí)行計劃來說明為啥是這樣。
    2013-08-08
  • 淺談MySQL觸發(fā)器的原理以及使用

    淺談MySQL觸發(fā)器的原理以及使用

    這篇文章主要介紹了淺談MySQL觸發(fā)器的原理以及使用,觸發(fā)器的執(zhí)行不需要使用 CALL 語句來調(diào)用,也不需要手工啟動,只要一個預定義的事件發(fā)生就會被 MySQL自動調(diào)用,需要的朋友可以參考下
    2023-05-05

最新評論