極客時間 MySQL實戰45講 2 日誌模組

2021-09-13 14:12:25 字數 946 閱讀 2589

極客時間mysql實戰45講的第二講,從一條update語句為引,講mysql的日誌模組。update操作,除了和查詢語句一樣經過聯結器、分析器、優化器、執行器等步驟外,還涉及到日誌。以便在遇到宕機或者其他意外時,得以將資料恢復過來;

mysql的日誌模組,主要分為redo log(重做日誌)和bin log(歸檔日誌);redo log 是由inno db提供的,它保證了資料庫在異常重啟之後,之前提交的記錄不丟失,稱為 crash - safe。而bin log則存在於server層;

redo log和bin log主要不同點在於:

redo log是inn db引擎特有的;bin log是mysql的server層實現的,所有引擎都可以使用。

redo log是物理日誌,記錄的是「在某個資料頁上做了什麼修改」;bin log是邏輯日誌,記錄的是這

個語句的原始邏輯,比如「給id=2這一行的c欄位加1 」。

redo log是迴圈寫的,空間固定會用完;bin og是可以追加寫入的。「追加寫」是指bin log檔案寫到一

定大小後會切換到下乙個,並不會覆蓋以前的日誌。

其中,redo log是固定大小的,分組分塊,如圖所示,有乙個check point和write pos,write point記錄當前位置,新紀錄追加在此,而check point則是要擦除的位置,當write pos追上check point,說明該空間寫滿了,需要將資料寫入磁碟才能繼續使用redo log,這和資料結構中的環形鍊錶十分相像;同時,為了保證redo log和bin log保持一致,redo log的寫入分了兩個步驟,分成了兩次commit;

bin log則是沒有限制大小,採用的是追加的方式,不會覆蓋掉之前的日誌;

提取碼:6ga0

實戰mysql45講 MySQL實戰45講

作者簡介 林曉斌,網名 丁奇 前阿里資深技術專家,曾負責阿里雲rds核心開發團隊和運維團隊,並推動了alisql分支開源。作為活躍的mysql社群貢獻者,丁奇專注於資料儲存系統 mysql原始碼研究和改進 mysql效能優化和功能改進,熱衷於解決mysql疑難問題。課程亮點 你將獲得 前阿里資深技術...

mysql實戰45講筆記 07

07 行鎖功過 怎麼減少行鎖對效能的影響 mysql的行鎖是在引擎層由各個引擎自己實現的,不是所有資料庫都支援行鎖比如myisam 行鎖就是針對資料表中行記錄的鎖。在innodb事務中,行鎖是在需要的時候才加上的,但並不是不需要了就立刻回訪,而是等到事務結束時才釋放,這就是兩階段鎖協議。因此,如果事...

最新MySQL實戰45講教程

目錄 01.基礎架構 一條sql查詢語句是如何執行的?html 01.基礎架構 一條sql查詢語句是如何執行的?01.基礎架構 一條sql查詢語句是如何執行的?pdf 02.日誌系統 一條sql更新語句是如何執行的?html 02.日誌系統 一條sql更新語句是如何執行的?02.日誌系統 一條sql...