真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

什么是redolog

本篇內(nèi)容主要講解“什么是redo log”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“什么是redo log”吧!

網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計介紹好的網(wǎng)站是理念、設(shè)計和技術(shù)的結(jié)合。創(chuàng)新互聯(lián)公司擁有的網(wǎng)站設(shè)計理念、多方位的設(shè)計風(fēng)格、經(jīng)驗豐富的設(shè)計團隊。提供PC端+手機端網(wǎng)站建設(shè),用營銷思維進行網(wǎng)站設(shè)計、采用先進技術(shù)開源代碼、注重用戶體驗與SEO基礎(chǔ),將技術(shù)與創(chuàng)意整合到網(wǎng)站之中,以契合客戶的方式做到創(chuàng)意性的視覺化效果。

1 什么是redo log

簡單的說 redo log 是MySQL 底層存儲引擎innodb的一種日志。最終是保存在磁盤的上的。

一條redo log中大致記錄著有 日志類型,表空間id,數(shù)據(jù)頁,數(shù)據(jù)頁中的偏移量,具體修改的數(shù)據(jù)。也就是說記錄了什么操作類型,操作了那個表空間的那個數(shù)據(jù)頁,具體修改了那些值。

簡單畫個圖

什么是redo log

2 redo log 存儲結(jié)構(gòu)是怎樣的

redo log 在硬盤中真實以  表空間id+數(shù)據(jù)頁id+數(shù)據(jù)頁內(nèi)偏移量+修改了幾個字節(jié)的數(shù)據(jù)+實際修改數(shù)據(jù) 存儲的么?肯定不是了。

redo log 真正的存儲結(jié)構(gòu)是mysql中的一個 block 塊。這個block塊分為 header body trailer 三部分,body中存放的是真正的數(shù)據(jù),頭部保存的是一些元數(shù)據(jù)(比如 body中存儲了多少字節(jié)的數(shù)據(jù),當前block的id多少,redo log的組,我們一個事務(wù)可能會有多個redo log,這些個redo log是同一個組里的)

3 redo log 作用是什么

根據(jù)上面我們提到的 redo log 存儲的數(shù)據(jù)結(jié)構(gòu)來看,大致可以猜應(yīng)該是用來做數(shù)據(jù)恢復(fù),備份啊之類的但是binlog中也有記錄啊,怎么要多記錄一份呢?里面存儲的該行數(shù)據(jù)的最新信息,難道是容錯用的?對的。redo log 是用來事務(wù)重做的。

怎么理解這個呢。其實很簡單,mysql實際更新數(shù)據(jù)的時候先更新的內(nèi)存,然后自何時的時候flush到磁盤上,這個時候如果down機了,此時數(shù)據(jù)還沒來及flush到磁盤,內(nèi)存中的數(shù)據(jù)會丟失的。

這個就涉及到mysql 執(zhí)行一條sql語句時 整體流程了。我們后面再說,這里直接說redo log 了。mysql更新完內(nèi)存中數(shù)據(jù)后會在binlog中記錄當前事務(wù) update xxxx 做歸檔。然后提交任務(wù)(其實就是寫 redo log)。在redo log 中做個標記 當前事務(wù)執(zhí)行到了那個binlog,偏移量是什么等等。

這樣整個事務(wù)才算提交完畢。如果此時down 機 內(nèi)存中的數(shù)據(jù)還么來及flush到磁盤上,mysql會掃描當前redo log 日志基于上面的記錄找到對應(yīng)的binlog 重新執(zhí)行邊流程。將數(shù)據(jù)重做到內(nèi)存和磁盤上。

4 redo log 寫入策略是怎樣的

我們上面說到了redo log是寫在一個個的 block中的,那是直接寫硬盤么?肯定不是,會大大減低更新的性能。

mysql是先寫吧redo log 寫入到內(nèi)存中,在何時的機會進行刷盤,但是redo log buffer 并不會向緩存頁一樣那么大默認16MB。畢竟一個block就512個字節(jié) 。

那什么時候才是flush redo log buffer 的時候呢?符合以下幾點就會執(zhí)行flush操作:

  1. 如果一個事務(wù)涉及到多個redo log 那肯定都要把這些同組的redo log都刷入磁盤,因為一個事務(wù)中要么都成功,要么都失敗

  2. mysql 執(zhí)行 shutdown的時候,會把所有的block flush到磁盤上。

  3. 異步線程每隔1秒就將buffer中的block flush到磁盤上。

  4. redo log buffer 容量占用一半的時候也會觸發(fā)flush操作

到此,相信大家對“什么是redo log”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


標題名稱:什么是redolog
轉(zhuǎn)載注明:http://weahome.cn/article/gchpco.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部