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

MySQL 撤銷日志與重做日志(Undo Log與Redo Log)相關總結(jié)

 更新時間:2021年03月24日 10:36:13   作者:Thresh  
這篇文章主要介紹了MySQL 撤銷日志與重做日志(Undo Log與Redo Log)相關總結(jié),幫助大家更好的理解和學習使用MySQL,感興趣的朋友可以了解下

Undo Log

數(shù)據(jù)庫事務開始之前,會將要修改的記錄存放到 Undo 日志里,當事務回滾時或者數(shù)據(jù)庫崩潰時,可以利用 Undo 日志,撤銷未提交事務對數(shù)據(jù)庫產(chǎn)生的影響。

Undo Log產(chǎn)生和銷毀

Undo Log在事務開始前產(chǎn)生;事務在提交時,并不會立刻刪除undo log,innodb會將該事務對應的undo log放入到刪除列表中,后面會通過后臺線程purge thread進行回收處理。
Undo Log屬于邏輯日志,記錄一個變化過程。例如執(zhí)行一個delete,undolog會記錄一個insert;執(zhí)行一個update,undolog會記錄一個相反的update。

Undo Log存儲

Undo log采用段的方式管理和記錄。在innodb數(shù)據(jù)文件中包含一種rollback segment回滾段,內(nèi)部包含1024個undo log segment??梢酝ㄟ^下面一組參數(shù)來控制Undo log存儲。

show variables like '%innodb_undo%'; 

Undo Log作用

實現(xiàn)事務的原子性

Undo Log 是為了實現(xiàn)事務的原子性而出現(xiàn)的產(chǎn)物。事務處理過程中,如果出現(xiàn)了錯誤或者用戶執(zhí)行了 ROLLBACK 語句,MySQL 可以利用 Undo Log 中的備份將數(shù)據(jù)恢復到事務開始之前的狀態(tài)。

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

Undo Log 在 MySQL InnoDB 存儲引擎中用來實現(xiàn)多版本并發(fā)控制。事務未提交之前,Undo Log保存了未提交之前的版本數(shù)據(jù),Undo Log 中的數(shù)據(jù)可作為數(shù)據(jù)舊版本快照供其他并發(fā)事務進行快照讀。

事務A手動開啟事務,執(zhí)行更新操作,首先會把更新命中的數(shù)據(jù)備份到 Undo Buffer中。
事務B手動開啟事務,執(zhí)行查詢操作,會讀取 Undo 日志數(shù)據(jù)返回,進行快照讀

Redo Log

指事務中修改的任何數(shù)據(jù),將最新的數(shù)據(jù)備份存儲的位置(Redo Log),被稱為重做日志。

Redo Log 的生成和釋放

隨著事務操作的執(zhí)行,就會生成Redo Log,在事務提交時會將產(chǎn)生Redo Log寫入Log Buffer,并不是隨著事務的提交就立刻寫入磁盤文件。
等事務操作的臟頁寫入到磁盤之后,Redo Log 的使命也就完成了,Redo Log占用的空間就可以重用(被覆蓋寫入)。

Redo Log 工作原理

Redo Log 是為了實現(xiàn)事務的持久性而出現(xiàn)的產(chǎn)物。防止在發(fā)生故障的時間點,尚有臟頁未寫入表的 ibd 文件中,在重啟 MySQL 服務的時候,根據(jù) Redo Log 進行重做,從而達到事務的未入磁盤數(shù)據(jù)進行持久化這一特性。

Redo Log 寫入機制

Redo Log 文件內(nèi)容是以順序循環(huán)的方式寫入文件,寫滿時則回溯到第一個文件,進行覆蓋寫

write pos 是當前記錄的位置,一邊寫一邊后移,寫到最后一個文件末尾后就回到 0 號文件開頭;
checkpoint 是當前要擦除的位置,也是往后推移并且循環(huán)的,擦除記錄前要把記錄更新到數(shù)據(jù)文件;
write pos 和 checkpoint 之間還空著的部分,可以用來記錄新的操作。如果 write pos 追上checkpoint,表示寫滿,這時候不能再執(zhí)行新的更新,得停下來先擦掉一些記錄,把checkpoint 推進一下。

Redo Log相關配置參數(shù)

每個InnoDB存儲引擎至少有1個重做日志文件組(group),每個文件組至少有2個重做日志文件,默認為ib_logfile0和ib_logfile1??梢酝ㄟ^下面一組參數(shù)控制Redo Log存儲

show variables like '%innodb_log%';

Redo Buffer 持久化到 Redo Log 的策略,可通過 Innodb_flush_log_at_trx_commit 設置

0:每秒提交 Redo buffer ->OS cache -> flush cache to disk,可能丟失一秒內(nèi)的事務數(shù)據(jù)。由后臺Master線程每隔 1秒執(zhí)行一次操作。
1(默認值):每次事務提交執(zhí)行 Redo Buffer -> OS cache -> flush cache to disk,最安全,性能最差的方式。
2:每次事務提交執(zhí)行 Redo Buffer -> OS cache,然后由后臺Master線程再每隔1秒執(zhí)行OS cache -> flush cache to disk 的操作。

一般建議選擇取值2,因為 MySQL 掛了數(shù)據(jù)沒有損失,整個服務器掛了才會損失1秒的事務提交數(shù)據(jù)。

以上就是MySQL 撤銷日志與重做日志(Undo Log與Redo Log)相關總結(jié)的詳細內(nèi)容,更多關于MySQL 撤銷日志與重做日志(Undo Log與Redo Log)的資料請關注腳本之家其它相關文章!

相關文章

  • mysql下怎樣運行腳本以運行niuzi.sql為例

    mysql下怎樣運行腳本以運行niuzi.sql為例

    mysql下運行腳本,有兩種方法,都是在命令行下進行的,需要的朋友可以記錄下
    2014-07-07
  • MySQL之索引結(jié)構(gòu)解讀

    MySQL之索引結(jié)構(gòu)解讀

    這篇文章主要介紹了MySQL之索引結(jié)構(gòu)解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • MySQL中設置服務器級別的默認排序規(guī)則的方法

    MySQL中設置服務器級別的默認排序規(guī)則的方法

    collation_server?是一個系統(tǒng)變量,它定義了服務器級別的默認排序規(guī)則,本文主要介紹了MySQL中設置服務器級別的默認排序規(guī)則的方法,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • MySQL 5.7臨時表空間如何玩才能不掉坑里詳解

    MySQL 5.7臨時表空間如何玩才能不掉坑里詳解

    這篇文章主要給大家介紹了關于MySQL 5.7臨時表空間如何玩才能不掉坑里的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用mysql具有一定的參考學習價值,需要的朋友們下面隨著小編來一起看看吧
    2018-09-09
  • mysql installer web community 5.7.21.0.msi安裝圖文教程

    mysql installer web community 5.7.21.0.msi安裝圖文教程

    這篇文章主要為大家詳細介紹了mysql installer web community 5.7.21.0.msi,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • MySQL主鍵約束和外鍵約束詳解

    MySQL主鍵約束和外鍵約束詳解

    主鍵約束,說白了就是 not null + unique,主鍵也是在插入數(shù)據(jù)的時候先進行查詢,而 MySQL 則會對 unique,primary key 這樣的列自動的添加索引(后續(xù)介紹),來提高查詢的效率,這篇文章主要介紹了MySQL主鍵約束和外鍵約束,需要的朋友可以參考下
    2023-03-03
  • MySQL 8.0新特性之隱藏字段的深入講解

    MySQL 8.0新特性之隱藏字段的深入講解

    這篇文章主要給大家介紹了關于MySQL 8.0新特性之隱藏字段的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • 一篇文章帶你入門SQL編程

    一篇文章帶你入門SQL編程

    這篇文章主要為大家詳細介紹了SQL編程的入門方法,使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • MySQL里面的子查詢實例

    MySQL里面的子查詢實例

    最近學習php+mysql執(zhí)行操作,發(fā)現(xiàn)了這一篇實例代碼
    2008-04-04
  • Sql Server數(shù)據(jù)庫遠程連接訪問設置詳情

    Sql Server數(shù)據(jù)庫遠程連接訪問設置詳情

    這篇文章主要介紹了Sql Server數(shù)據(jù)庫遠程連接訪問設置詳情,文章圍繞主題展開詳細的內(nèi)容戒殺,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09

最新評論