MySql中innodb儲存引擎事務日誌詳解

2021-09-08 20:09:40 字數 892 閱讀 1811

mysql會最大程度的使用快取機制來提高資料庫的訪問效率,但是萬一資料庫發生斷電,因為快取的資料沒有寫入磁碟,導致快取在記憶體中的資料丟失而導致資料不一致怎麼辦?

innodb主要是通過事務日誌實現acid特性,事務日誌包括:重做日誌redo和回滾日誌undo。

redo記錄的是已經全部完成的事務,就是執行了commit的事務,記錄檔案是ib_logfile0 ib_logfile1

undo記錄的是已部分完成並且寫入硬碟的未完成的事務,預設情況下回滾日誌是記錄下表空間中的(共享表空間或者獨享表空間)

一般情況下,mysql在崩潰之後,重啟服務,innodb通過回滾日誌undo將所有已完成並寫入磁碟的未完成事務進行rollback,然後redo中的事務全部重新執行一遍即可恢復資料,但是隨著redo的量增加,每次從redo的第一條開始恢復就會浪費長的時間,所以引入了checkpoint機制

dirty page:髒頁 什麼意思呢?

一般業務執行過程中,當業務需要對某張的某行資料進行修改的時候,innodb會先將該資料從磁碟讀取到快取中去,然後在快取中對這條資料進行修改,這樣快取中的資料就和磁碟的資料不一致了,這個時候快取中的資料就稱為dirty page,只有當髒頁統一重新整理到磁碟中才會是clean page

checkpoint:如果在某個時間點,髒頁的資料被重新整理到了磁碟,系統就把這個重新整理的時間點記錄到redo log的結尾位置,在進行恢復資料的時候,checkpoint時間點之前的資料就不需要進行恢復了,可以縮短時間

innodb_log_buffer_size 重做日誌快取大小

innodb_log_file_size redo log檔案大小  檔案越大 資料恢復的時間越長

innodb_log_file_group redo log檔案數量 預設是2個 ib_logfile0 ib_logfile1

Mysql中MyISAM與InnoDB引擎的區別

innodb mysql 5.5.5版本之後為預設儲存引擎。innodb 是乙個事務安全 與 acid 相容 的mysql儲存引擎,它具有提交 回滾和崩潰恢復功能來保護使用者資料。innodb 行級鎖 不公升級為更粗粒度的鎖 和 oracle風格的一致非鎖讀提高了多使用者併發性和效能。innodb ...

MySQL中MyISAM和InnoDB引擎的區別

區別 1.innodb支援事務,myisam不支援,對於innodb每一條sql語言都預設封裝成事務,自動提交,這樣會影響速度,所以最好把多條sql語言放在begin和commit之間,組成乙個事務 2.innodb支援外來鍵,而myisam不支援。對乙個包含外來鍵的innodb表轉為myisam會...

20 筆記 MySQL學習 InnoDB儲存引擎

20.筆記 mysql學習 innodb儲存引擎 innodb儲存引擎是mysql的預設引擎。有幾項功能 n 其表在執行提交和回滾操作時是事務安全的。n 在系統崩潰後可以自動恢復 n 外來鍵和引用完整性支援,包括級聯刪除和更新 n 基於行級別的鎖定和多版本化 n 從mysql 5.6開始,innod...