天天看點

【Java面試】binlog和redolog有什麼差別?

作者:跟着Mic學架構

一個工作3年的同學好不容易約到一個面試,卻被這個問題難倒了。

“binlog和redolog有什麼差別?”

關于這個問題的回答,我把它整理到了30W字的面試文檔裡面,大家可以S信我發【Mic】領取。

問題解析

這個問題其實比較簡單,但凡稍微了解過Mysql資料庫,都很容易回答出來。

一般考察1~3年的程式員,是以對于這個工作年限的小夥伴要注意了解它們的原理。

首先,binlog和redolog都是Mysql裡面用來記錄資料庫資料變更操作的日志。

其中binlog主要用來做資料備份、資料恢複和資料同步,大家初步接觸這個概念 ,應該是在Mysql的主從資料同步的場景中,master節點的資料變更,會寫入到binlog中,然後再把binlog中的資料通過網絡傳輸給slave節點,實作資料同步。

【Java面試】binlog和redolog有什麼差別?

而redolog,主要是在Mysql資料庫事務的ACID特性裡面,用來保證資料的持久化特性。但是其實它還有很多的作用。

比如資料庫崩潰時,可以通過Redo Log來恢複未完成的資料,保證資料的完整性。

通過合理的配置Redo Log的大小和數量,還可以優化Mysql的性能。

那下面來看下這個面試題的回答吧。

問題答案

binlog和redolog的差別有很多,我可以簡單總結三個點

  1. 使用場景不同,binlog主要用來做資料備份、資料恢複、以及主從叢集的資料同步; Redo Log主要用來實作Mysql資料庫的事務恢複,保證事務的ACID特性。當資料庫出現崩潰的時候,Redo Log可以把未送出的事務復原,把已送出的事務進行持久化,進而保證資料的一緻性和持久性。
  2. 記錄的資訊不同,binlog是記錄資料庫的邏輯變化,它提供了三種日志格式分别是statement,row以及mixed;
  3. redo log記錄的是實體變化,也就是資料頁的變化結果。
  4. 記錄的時機不同, binlog是在執行SQL語句的時候,在主線程中生成邏輯變化寫入到磁盤中,是以它是語句級别的記錄方式; RedoLog是在InnoDB存儲引擎層面的操作,它是在Mysql背景線程中生成并寫入到磁盤中的,是以它是事務級别的記錄方式,一個事務操作完成以後才會被寫入到redo log中。

以上就是我的了解!

總結

好了,今天的分享就到這裡結束了

如果喜歡我的作品,記得點贊、收藏、關注

需要高手面試文檔合集(附贈大廠内部面試文檔)或者有不懂的技術面試題想咨詢的小夥伴可以背景私信【Mic】。

【Java面試】binlog和redolog有什麼差別?
【Java面試】binlog和redolog有什麼差別?

繼續閱讀