91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

什么是redo log

發布時間:2021-10-14 12:00:45 來源:億速云 閱讀:279 作者:iii 欄目:編程語言

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

1 什么是redo log

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

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

簡單畫個圖

什么是redo log

2 redo log 存儲結構是怎樣的

redo log 在硬盤中真實以  表空間id+數據頁id+數據頁內偏移量+修改了幾個字節的數據+實際修改數據 存儲的么?肯定不是了。

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

3 redo log 作用是什么

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

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

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

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

4 redo log 寫入策略是怎樣的

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

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

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

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

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

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

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

到此,相信大家對“什么是redo log”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

耒阳市| 榆社县| 镇江市| 商城县| 永顺县| 沭阳县| 蒲城县| 雷州市| 天津市| 遂平县| 陵水| 松溪县| 衡阳市| 岢岚县| 兴宁市| 横山县| 库伦旗| 攀枝花市| 都安| 河北区| 潼南县| 塔城市| 区。| 托克逊县| 鄂托克前旗| 多伦县| 高雄县| 南川市| 安阳县| 大厂| 金川县| 鄂州市| 平陆县| 赫章县| 清丰县| 延庆县| 察雅县| 湖南省| 彭阳县| 双鸭山市| 资兴市|