MySQL中的三種日誌的特點和作用介紹

2022-09-10 17:39:15 字數 1148 閱讀 9204

重做日誌(redo log)和回滾日誌(undo log)與事務操作息息相關,二進位制日誌二進位制日誌(binlog)也與事務操作有一定的關係,這三種日誌,對理解mysql中的事務操作有著重要的意義。

作用:

確保事務的永續性。redo日誌記錄事務執行後的狀態,用來恢復未寫入data file的已成功事務更新的資料。防止在發生故障的時間點,尚有髒頁未寫入磁碟,在重啟mysql服務的時候,根據redo log進行重做,從而達到事務的永續性這一特性。

內容:

物理格式的日誌,記錄的是物理資料頁面的修改的資訊,其redo log是順序寫入redo log file的物理檔案中去的。

什麼時候釋放:

當對應事務的髒頁寫入到磁碟之後,redo log的使命也就完成了,重做日誌占用的空間就可以重用(被覆蓋)。

對應的物理檔案:

預設情況下,對應的物理檔案位於資料庫的data目錄下的ib_logfile1&ib_logfile2

innodb_log_group_home_dir 指定日誌檔案組所在的路徑,預設./ ,表示在資料庫的資料目錄下。

innodb_log_files_in_group 指定重做日誌檔案組中檔案的數量,預設2

其他:很重要一點,redo log是什麼時候寫盤的?前面說了是在事物開始之後逐步寫盤的。

之所以說重做日誌是在事務開始之後逐步寫入重做日誌檔案,而不一定是事務提交才寫入重做日誌快取,原因就是,重做日誌有乙個快取區innodb_log_buffer,innodb_log_buffer的預設大小為8m(這裡設定的16m),innodb儲存引擎先將重做日誌寫入innodb_log_buffer中。

然後會通過以下三種方式將innodb日誌緩衝區的日誌重新整理到磁碟

由此可以看出,重做日誌通過不止一種方式寫入到磁碟,尤其是對於第一種方式,innodb_log_buffer到重做日誌檔案是master thread執行緒的定時任務。

因此重做日誌的寫盤,並不一定是隨著事務的提交才寫入重做日誌檔案的,而是隨著事務的開始,逐步開始的。

mysql三種binlog日誌的理解

最近,一直在糾結要不要改資料庫binlog的日誌格式,原先用的是row格式,導致資料庫binlog日誌較大,磁碟空間本來也不是很大,所以就想看看能不能改變binlog日誌。在該binlog日誌之前,先查詢乙份關於binlog日誌的講解,記錄如下 一,mysql binlog共有三種日誌 statem...

mysql獲取邏輯日誌 MySQL 三種日誌

日誌是 資料庫的重要組成部分,記錄著資料庫執行期間各種狀態資訊。日誌主要包括錯誤日誌 查詢日誌 慢查詢日誌 事務日誌 二進位制日誌幾大類。作為開發,我們重點需要關注的是二進位制日誌 和事務日誌 包括 和 本文接下來會詳細介紹這三種日誌。binlog 用於記錄資料庫執行的寫入性操作 不包括查詢 資訊,...

三種連線方式的特點

本帖最後由 extremeways 於 2013 3 27 23 06 編輯 nested loop 1.乙個大表和乙個小表 驅動表 連線,連線方式可以是等值或者是不等值 2.驅動表資料較小或者內部表已連線的列有唯一性索引或者高度可選的非唯一性索引,效率很高 3.能快速讀取結果集中第一批記錄而不必等...