日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

詳解MySQL事務(wù)日志redo log

瀏覽:36日期:2023-06-08 19:37:37
目錄redo log介紹redo log整體流程redo log落盤策略redo log寫入數(shù)據(jù)頁機(jī)制總結(jié)redo log介紹

redo log又叫“重做日志”,是存儲引擎層 (innoDB) 生成的日志,記錄的是"物理級別"上的頁修改操作,比如頁號x,偏移量y寫入了'z'數(shù)據(jù),主要目的為了保證數(shù)據(jù)不丟失,當(dāng)MySQL發(fā)生宕機(jī)的時候,可以利用redo log日志進(jìn)行數(shù)據(jù)恢復(fù),如下圖所示。

默認(rèn)的redo log日志文件為ib_logfile0, ib_logfile1,如下圖:

那想過為什么要"多此一舉"先寫入到redo log磁盤文件中,然后再落到數(shù)據(jù)庫表中?而不直接落到數(shù)據(jù)庫表中?

主要是因為順序IO性能遠(yuǎn)高于隨機(jī)IO。

數(shù)據(jù)在MySQL中存儲是以頁為單位,事務(wù)中的數(shù)據(jù)可能遍布在不同的頁中,如果直接寫入到對應(yīng)的頁中,是隨機(jī)IO寫入。

而redo log是通過順序IO"追加"的方式寫入到文件末尾,而且寫入的內(nèi)容也是物理日志,比如比如,某個事務(wù)將系統(tǒng)表空間中第10號頁面中偏移量為 100 處的那個字節(jié)的值 1 改成 2等信息,日志占用空間也很小。

redo log整體流程

事務(wù)在寫入到數(shù)據(jù)庫中涉及到redo log的整體流程如下圖所示:

性能不夠,緩存來湊。由于CPU的性能遠(yuǎn)遠(yuǎn)大于磁盤,為了消除這個鴻溝,引入了兩個緩存,Buffer Pool和redo log buffer。Buffer Pool用來存放各種操作,比如寫入數(shù)據(jù)時,先寫到內(nèi)存中,然后由后臺線程再刷寫到磁盤。redo log buffer用來存放重做日志,后續(xù)刷到磁盤中。

先將原始數(shù)據(jù)從磁盤中讀入到Buffer Pool中修改Buffer Pool中的數(shù)據(jù)生成一條重做日志并寫入redo log buffer,記錄數(shù)據(jù)修改后的值當(dāng)事務(wù)提交時,將redo log buffer中的內(nèi)容追加磁盤中的redo log文件中將磁盤日志文件redo log file 內(nèi)容刷到數(shù)據(jù)庫表中

上面流程中這種先寫日志,再寫磁盤,只有日志寫入成功,才算事務(wù)提交成功的技術(shù)思想在MySQL也叫做WAL技術(shù) (Write-Ahead Logging)。

redo log落盤策略

事務(wù)的日志是先寫入到redo log buffer 中是很快的,那如何保證redo log buffer中的信息高效的落到磁盤日志文件中呢?

redo log buffer不是直接將日志內(nèi)容刷盤到redo log file中。redo log buffer內(nèi)容先刷入到操作系統(tǒng)的文件系統(tǒng)緩存 (page cache)中去,這個過程很快,而且整個系統(tǒng)宕機(jī)概率相對MySQL會小很多。最后,日志內(nèi)容會從操作系統(tǒng)的文件系統(tǒng)緩存中刷到磁盤的日志文件中,至于什么時候觸發(fā)這個動作,MySQL的innoDB引擎提供了3種策略可選。

InnoDB引擎提供了 innodb_flush_log_at_trx_commit 參數(shù),該參數(shù)控制 commit提交事務(wù)時,如何將 redo log buffer 中的日志刷新到 redo log file 的3種策略。

innodb_flush_log_at_trx_commit=1

每次事務(wù)提交時都將進(jìn)行同步, 執(zhí)行主動刷盤操作,如上圖的紅線位置,所以只要事務(wù)提交成功,redo log記錄就一定在硬盤里,不會有田可數(shù)據(jù)丟失。該種方式是MySQL innoDB存儲引擎默認(rèn)的刷盤機(jī)制。如果事務(wù)執(zhí)行期間MySQL掛了或宕機(jī),這部分日志丟了,但是事務(wù)并沒有提交,所以日志丟了也不會有損

失。可以保證ACID的D,數(shù)據(jù)絕對不會丟失,但是效率最差的。

innodb_flush_log_at_trx_commit=2

為2時,只要事務(wù)提交成功,redo log buffer中的內(nèi)容只寫入文件系統(tǒng)緩存(pagecache)如果僅僅只是MySQL掛了不會有任何數(shù)據(jù)丟失,但是操作系統(tǒng)宕機(jī)可能會有1秒數(shù)據(jù)的丟失,這種情況下無法滿足ACID中的D數(shù)值2的效率是高于數(shù)值等于1的innodb_flush_log_at_trx_commit=0

為0時,后臺線程每隔1秒進(jìn)行一次重做日志的刷盤操作,因此MySQL掛了最多丟失1秒鐘內(nèi)的事務(wù)。這種方式效率是最高的,這種策略也有丟失數(shù)據(jù)的風(fēng)險,也無法保證持久性。其他被動觸發(fā)刷盤的場景

除了上面3種策略進(jìn)行刷盤以外,還有兩種場景會讓一個沒有提交的事務(wù)的 redo log 寫入到磁盤中。

redo log buffer 占用的空間即將達(dá)到 innodb_log_buffer_size 一半的時候,后臺線程會主動寫盤。注意,由于這個事務(wù)并沒有提交,所以這個寫盤動作只是 write,而沒有調(diào)用 fsync,也就是只留在了文件系統(tǒng)的 page cache。并行的事務(wù)提交的時候,順帶將這個事務(wù)的 redo log buffer 持久化到磁盤。假設(shè)一個事務(wù) A 執(zhí)行到一半,已經(jīng)寫了一些 redo log 到 buffer 中,這時候有另外一個線程的事務(wù) B 提交,如果 innodb_flush_log_at_trx_commit 設(shè)置的是 1,那么按照這個參數(shù)的邏輯,事務(wù) B 要把 redo log buffer 里的日志全部持久化到磁盤。這時候,就會帶上事務(wù) A 在 redo log buffer 里的日志一起持久化到磁盤。

小結(jié):

我們可以根據(jù)實際的業(yè)務(wù)場景,在性能和持久性做一些權(quán)衡,但建議使用默認(rèn)值,雖然操作系統(tǒng)宕機(jī)的概率理論小于數(shù)據(jù)庫宕機(jī)的概率,但是一般既然使用了事務(wù),那么數(shù)據(jù)的安全相對來說更重要些。

redo log寫入數(shù)據(jù)頁機(jī)制

目前事務(wù)日志已經(jīng)落入到磁盤的redo log file中了,MySQL會去讀取這個文件將數(shù)據(jù)寫入到數(shù)據(jù)頁中。

很顯然,目前對redo log file會進(jìn)行讀和寫的操作。在日志文件組中有兩個重要的“指針”,分別是 write pos、``checkpoint。

write pos是當(dāng)前記錄的位置,一邊寫一邊后移checkpoint是當(dāng)前要擦除的位置,也是往后推移

每次刷盤 redo log 記錄到日志文件組中,write pos 位置就會后移更新。每次MySQL加載日志文件組恢復(fù)數(shù)據(jù)時,會清空加載過的 redo log 記錄,并把checkpoint后移更新。如果write pos 追上 checkpoint ,表示日志文件組滿了,這時候不能再寫入新的 redo log記錄,MySQL 得停下來,清空一些記錄,把 checkpoint 推進(jìn)一下,如下圖:

這就是整個redo log file中的日志恢復(fù)到數(shù)據(jù)頁中的過程。

總結(jié)

本文講解了事務(wù)日志redo log在MySQL innoDB存儲引擎工作的機(jī)制,它主要是用來保證事務(wù)的持久性,避免數(shù)據(jù)丟失。如果本文對你有幫助,請留下一個贊。

到此這篇關(guān)于詳解MySQL事務(wù)日志redo log的文章就介紹到這了,更多相關(guān)MySQL事務(wù)日志redo log內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: MySQL 數(shù)據(jù)庫
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
黄页网站一区| 国产成年精品| 99亚洲精品| 亚洲国产专区| 久久在线电影| 九一精品国产| 国产午夜精品一区二区三区欧美 | 国产探花在线精品一区二区| 99国产精品久久久久久久成人热| 日韩午夜一区| 日韩久久99| 欧美黑人巨大videos精品| 久久不卡国产精品一区二区| 国产中文欧美日韩在线| 日韩毛片视频| 亚洲精品午夜av福利久久蜜桃| 久久av一区二区三区| 涩涩涩久久久成人精品| 国产日韩在线观看视频| 精品视频高潮| 色爱av综合网| 性色一区二区| 欧美久久精品| 久久av免费看| 日韩在线高清| 亚洲欧美日韩国产| 欧美日韩一区二区三区不卡视频 | 青青国产精品| 久久99蜜桃| 四虎4545www国产精品| 999在线观看精品免费不卡网站| 综合激情在线| 国产精品主播在线观看| 久久久久久色| 精品无人区麻豆乱码久久久| 日韩中文影院| 亚洲欧美视频| 国产精品网站在线看| 国产精品麻豆久久| 亚洲一区二区三区高清不卡| 欧美亚洲色图校园春色| 麻豆成全视频免费观看在线看| 欧美日韩精品一本二本三本 | 91免费精品国偷自产在线在线| 国产一区二区三区不卡视频网站| 久久伦理在线| 欧美亚洲三区| 激情久久五月| 国产欧美88| 欧美日韩亚洲在线观看| 日韩在线电影| 岛国av在线网站| 亚洲一区二区免费在线观看| 精品亚洲免a| 在线亚洲自拍| 国产精品成人一区二区网站软件| 久久麻豆精品| 久久国内精品| 欧美在线网站| 老司机免费视频一区二区三区| 激情自拍一区| 青草综合视频| 狠狠久久婷婷| 精品久久久久中文字幕小说| 亚洲深爱激情| 成人污污视频| 日本欧美在线| 一区二区视频欧美| 国产一区三区在线播放| 亚州欧美在线| 欧美69视频| 精品视频网站| 亚洲精品无播放器在线播放| 四虎影视精品| 久久99青青| 丝袜美腿一区二区三区| 高清一区二区三区av| 日本高清久久| 日韩一区二区久久| 九色porny丨国产首页在线| 欧美视频一区| 中文字幕av一区二区三区人| 999久久久亚洲| 91视频久久| 国产精品第十页| 日韩精品欧美精品| 99国产精品视频免费观看一公开| 成人污污视频| 国产欧美一区二区精品久久久| 视频在线观看一区二区三区| 丁香六月综合| 欧美国产另类| 国产探花在线精品| 亚洲一级淫片| 亚洲一区免费| 国产综合欧美| 欧美日韩一区二区三区视频播放| 国语精品一区| 国产欧美一级| 欧美三区不卡| 日韩av网站在线免费观看| 日韩制服丝袜先锋影音| 香蕉精品久久| 久久激情一区| 日韩一区二区中文| 国产精品久久观看| 国产一区2区在线观看| 美日韩一区二区三区| 国产麻豆一区二区三区| 日韩精品久久久久久| 亚洲一区二区三区中文字幕在线观看| 亚洲国内欧美| 欧美va天堂在线| 美女毛片一区二区三区四区| 久久国产亚洲| 中文字幕在线免费观看视频| 精品欧美视频| 色婷婷色综合| 91一区二区三区四区| 国产一区二区三区黄网站| 国产欧美午夜| 国产精品免费大片| 麻豆精品久久久| 国产成人精品一区二区三区视频 | 国产精品白丝一区二区三区| 国产欧美亚洲一区| 国产乱论精品| 久久精品伊人| 精品国产亚洲一区二区三区大结局| 久久一区欧美| 国产成年精品| zzzwww在线看片免费| 国产精品精品国产一区二区| 日本在线高清| 欧美不卡视频| 亚洲深深色噜噜狠狠爱网站 | 中文字幕亚洲影视| 日韩中文字幕一区二区高清99| 蜜桃一区二区三区在线观看 | 国产精品日韩久久久| 久久国产精品久久久久久电车| 中文精品电影| 欧美日一区二区在线观看| 国产精品成人国产| 国产激情精品一区二区三区| 日韩综合一区| 美女久久久久| 亚洲精品美女91| 欧美激情一区| 欧美日韩尤物久久| 国产亚洲一区在线| 日韩av一级片| 国产99在线| 亚洲一区国产| 国产精品毛片久久久| 97se综合| 免费一级片91| 国产精品香蕉| 91精品综合| 丝袜诱惑制服诱惑色一区在线观看| 91嫩草精品| www.com.cn成人| 快she精品国产999| 国产精品欧美日韩一区| 成人片免费看| 国产精品色网| 国产精品a级| 99精品美女| 五月激激激综合网色播| 国产一区二区三区视频在线| 欧美日韩国产亚洲一区| 国产伦精品一区二区三区千人斩| 亚洲不卡系列| 日韩av中文字幕一区二区| 精品91福利视频| 久久电影一区| 国产一区不卡| 中文字幕一区二区三区四区久久| 国产精品巨作av| 亚洲精品一区二区妖精| 久久精品99国产国产精| 99精品视频在线| 91九色综合| 亚洲国产日韩欧美在线| 国产精品一区二区三区av麻| 久久久久久黄| 欧美精品国产一区| 激情综合自拍| 欧美激情视频一区二区三区在线播放| 亚洲91视频| 国产精品s色| 国产亚洲永久域名| 国产欧美一区二区三区精品酒店| 亚洲永久精品唐人导航网址| 精品国产第一福利网站| 亚洲字幕久久| 亚洲va在线| 国产精品一区高清| 视频在线观看一区二区三区| 中文在线资源|