最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

Undo Log

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

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

Undo Log在事務(wù)開始前產(chǎn)生;事務(wù)在提交時,并不會立刻刪除undo log,innodb會將該事務(wù)對應(yīng)的undo log放入到刪除列表中,后面會通過后臺線程purge thread進(jìn)行回收處理。
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)事務(wù)的原子性

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

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

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

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

Redo Log

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

Redo Log 的生成和釋放

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

Redo Log 工作原理

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

Redo Log 寫入機制

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

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

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

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

show variables like '%innodb_log%';

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

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

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

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

相關(guān)文章

  • MySQL錯誤代碼2058和2059的解決辦法

    MySQL錯誤代碼2058和2059的解決辦法

    這篇文章主要介紹了MySQL錯誤代碼2058和2059的解決辦法,2058和2059的錯誤碼核心都是你用的客戶端工具和mysql版本的密碼插件不匹配,下面就來介紹一下解決方法,感興趣的可以了解一下
    2025-03-03
  • MySql8.0以上版本正確修改ROOT密碼的方法

    MySql8.0以上版本正確修改ROOT密碼的方法

    這篇文章主要介紹了MySql8.0以上版本正確修改ROOT密碼的方法,文中給大家提到了成功部署完畢后出現(xiàn)故障情況,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • mysql判斷查詢條件是否包含某字符串的7種方式

    mysql判斷查詢條件是否包含某字符串的7種方式

    本文主要介紹了mysql判斷查詢條件是否包含某字符串,主要介紹了7種方式,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • Windows下mysql 8.0.12 安裝詳細(xì)教程

    Windows下mysql 8.0.12 安裝詳細(xì)教程

    這篇文章主要為大家詳細(xì)介紹了Windows下mysql 8.0.12 安裝詳細(xì)教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • Windows平臺下MySQL安裝與配置方法與注意事項

    Windows平臺下MySQL安裝與配置方法與注意事項

    這篇文章主要介紹了Windows平臺下MySQL安裝與配置方法與注意事項,需要的朋友可以參考下
    2017-04-04
  • mysql 8.0.12 安裝配置方法并修改密碼

    mysql 8.0.12 安裝配置方法并修改密碼

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.12 安裝配置,及修改密碼的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • MySql版本問題sql_mode=only_full_group_by的完美解決方案

    MySql版本問題sql_mode=only_full_group_by的完美解決方案

    這篇文章主要介紹了MySql版本問題sql_mode=only_full_group_by的完美解決方案,需要的朋友可以參考下
    2017-07-07
  • 深入淺出講解MySQL的并行復(fù)制

    深入淺出講解MySQL的并行復(fù)制

    這篇文章主要給大家介紹了關(guān)于MySQL并行復(fù)制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或使用mysql具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • Mysql多主一從數(shù)據(jù)備份的方法教程

    Mysql多主一從數(shù)據(jù)備份的方法教程

    這篇文章主要給大家介紹了關(guān)于Mysql多主一從數(shù)據(jù)備份的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧
    2018-12-12
  • 開啟MySQL遠(yuǎn)程連接的方法

    開啟MySQL遠(yuǎn)程連接的方法

    這篇文章主要介紹了開啟MySQL遠(yuǎn)程連接的方法,幫助大家更好的理解和學(xué)習(xí)MySQL數(shù)據(jù)庫的使用,感興趣的朋友可以了解下
    2020-12-12

最新評論

锦州市| 福海县| 松溪县| 西宁市| 东港市| 芜湖县| 清丰县| 沁源县| 乌拉特中旗| 龙南县| 平阴县| 衢州市| 襄汾县| 家居| 丰顺县| 克拉玛依市| 获嘉县| 罗城| 中西区| 剑河县| 邵武市| 襄汾县| 会同县| 渑池县| 建昌县| 兴安县| 繁昌县| 长沙市| 博湖县| 册亨县| 吉水县| 丰原市| 贵溪市| 长宁县| 共和县| 大同县| 华安县| 无为县| 黄石市| 山丹县| 马边|