婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > MySQL 撤銷日志與重做日志(Undo Log與Redo Log)相關(guān)總結(jié)

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

熱門標(biāo)簽:啥是企業(yè)400電話辦理 外呼系統(tǒng)打電話上限是多少 南昌三維地圖標(biāo)注 曲靖移動(dòng)外呼系統(tǒng)公司 武漢網(wǎng)絡(luò)外呼系統(tǒng)服務(wù)商 怎樣在地圖標(biāo)注銷售區(qū)域 百應(yīng)電話機(jī)器人優(yōu)勢(shì) 電話外呼系統(tǒng)改號(hào) 地圖標(biāo)注費(fèi)用是多少

Undo Log

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

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

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

Undo Log存儲(chǔ)

Undo log采用段的方式管理和記錄。在innodb數(shù)據(jù)文件中包含一種rollback segment回滾段,內(nèi)部包含1024個(gè)undo log segment。可以通過(guò)下面一組參數(shù)來(lái)控制Undo log存儲(chǔ)。

show variables like '%innodb_undo%'; 

Undo Log作用

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

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

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

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

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

Redo Log

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

Redo Log 的生成和釋放

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

Redo Log 工作原理

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

Redo Log 寫入機(jī)制

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

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

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

每個(gè)InnoDB存儲(chǔ)引擎至少有1個(gè)重做日志文件組(group),每個(gè)文件組至少有2個(gè)重做日志文件,默認(rèn)為ib_logfile0和ib_logfile1。可以通過(guò)下面一組參數(shù)控制Redo Log存儲(chǔ)

show variables like '%innodb_log%';

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

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

一般建議選擇取值2,因?yàn)?MySQL 掛了數(shù)據(jù)沒(méi)有損失,整個(gè)服務(wù)器掛了才會(huì)損失1秒的事務(wù)提交數(shù)據(jù)。

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

您可能感興趣的文章:
  • MySQL系列之redo log、undo log和binlog詳解
  • 詳解MySQL 重做日志(redo log)與回滾日志(undo logo)
  • MySQL中的redo log和undo log日志詳解
  • 基于Redo Log和Undo Log的MySQL崩潰恢復(fù)解析
  • Mysql中undo、redo與binlog的區(qū)別淺析

標(biāo)簽:隨州 錦州 資陽(yáng) 甘南 吉林 黑河 滄州 荊州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL 撤銷日志與重做日志(Undo Log與Redo Log)相關(guān)總結(jié)》,本文關(guān)鍵詞  MySQL,撤銷,日志,與,重做,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL 撤銷日志與重做日志(Undo Log與Redo Log)相關(guān)總結(jié)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于MySQL 撤銷日志與重做日志(Undo Log與Redo Log)相關(guān)總結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 阳曲县| 阳高县| 慈溪市| 资溪县| 商城县| 元谋县| 澳门| 盈江县| 张家界市| 鞍山市| 衡南县| 祥云县| 深水埗区| 建德市| 卫辉市| 石门县| 富民县| 临夏市| 南平市| 濮阳市| 阜新| 五华县| 齐齐哈尔市| 榆树市| 海宁市| 阿拉尔市| 莆田市| 哈巴河县| 化隆| 苏尼特右旗| 临泽县| 高阳县| 丹巴县| 苍梧县| 龙山县| 南汇区| 克拉玛依市| 基隆市| 定兴县| 尚义县| 满洲里市|