MySQL日誌系統

2022-06-14 23:43:44 字數 703 閱讀 3768

日誌模組:redo log(物理日誌)

每次一次更新操作都需要寫進磁碟,然後磁碟也要找到對於記錄,然後在更新,整個i/o成本,查詢成本都很高;

innodb保證資料庫發生異常,之前的記錄也不會丟失,這個能力稱為crash-safe.

日誌模組:binlog(邏輯日誌)

1,執行器先找到引擎id=2,id是主鍵,引擎用樹搜尋找到者這行;

2, 如果id=2這一行所在資料頁本來就在記憶體中,直接返回給器,否則需要從磁碟讀入記憶體,然後在返回。執行器拿到引擎給的行資料,把這個值加1,比如原來是n,那麼現在是n+1,得到新的一行資料,在呼叫引擎介面寫入這行新資料;

3,引擎將這行新資料更新到記憶體中,同時這個更新記錄到redo log裡面,此時redol處於prepare狀態;

4, 執行器呼叫引擎的提交事務介面,引擎剛剛寫入的redo log改成提交(commit)提交狀態,更新完成;

為什麼兩階段提交?

先寫 redo log 後寫 binlog,假設在 redo log 寫完,binlog 還沒有寫完的時候,mysql 程序異常重啟。由於我們前面說過的,redo log 寫完之後,系統即使崩潰,仍然能夠把資料恢復回來;

先寫 binlog 後寫 redo log 如果在 binlog 寫完之後 crash,由於 redo log 還沒寫,崩潰恢復以後這個事務無效;

MySQL日誌系統

從乙個更新操作開始 mysql create table t id int primary key,c int mysql update t set c c 1 where id 2 與查詢流程不一樣的是,更新流程還涉及兩個重要的日誌模組,它們正是我們今天要討論的主角 redo log 重做日誌 和...

mysql系統日誌檔案 Mysql 日誌檔案系統

mysql中的日誌包括 錯誤日誌 通用查詢日誌 二進位制日誌 慢查詢日誌等等。這裡主要介紹下比較常用的兩個功能 通用查詢日誌和慢查詢日誌。錯誤日誌 記錄啟動 執行或停止mysqld時出現的問題。通用日誌 記錄建立的客戶端連線和執行的語句。二進位制日誌 記錄所有更改資料的語句。還用於複製。慢查詢日誌 ...

mysql日誌系統 SQL 邏輯日誌 物理日誌

更新語句執行的流程和查詢語句執行的流程一樣 注意 在乙個表上有更新的操作的時候,和這個表相關的查詢快取就會被清空 在經歷分析器,優化器,和執行器儲存引擎的歷程中,還多了重要的日誌模組 redo log 重做日誌 bin log 歸檔日誌 是innodb 引擎獨有的日誌模組 它的關鍵點就是更新的時候先...