mysql兩種常用存儲引擎myisam和innodb
myisam不支持事務;innodb支持事務,當前作為插件來安裝
myisam的數據庫的物理文件結構為:
.frm文件:與表相關的元數據信息都存放在frm文件,包括表結構的定義信息等。各種存儲引擎都需要frm文件,並且存放於數據庫名目錄下。
.myd文件:myisam存儲引擎專用,用於存儲myisam表的數據
.myi文件:myisam存儲引擎專用,用於存儲myisam表的索引相關信息
innodb的數據庫的物理文件結構為:
.frm文件
.ibd文件和.ibdata文件:
這兩種文件都是存放innodb數據的文件,之所以用兩種文件來存放innodb的數據,是因為innodb的數據存儲方式能夠通過配置來決定是使用共享表空間存放存儲數據,還是用獨享表空間存放存儲數據。
獨享表空間存儲方式使用.ibd文件,並且每個表一個ibd文件
共享表空間存儲方式使用.ibdata文件,所有表共同使用一個ibdata文件
ib_logfiles文件及作用
大家都知道這個是InnoDB的redolog。關於redolog的寫入策略部分,可以看我之前的這個文章(鏈接)。
這個系列文件個數由參數innodb_log_files_in_group控制,若設置為4,則命名為ib_logfile0~3。
很多文章都指出這些文件的寫入是順序、循環寫的,logfile0寫完從logfile1繼續,logfile3寫完則logfile0繼續。
ib_logfiles的作用,主要是在系統崩潰重啟時,作事務重做的。而在系統正常時,每次checkpoint時間點,會將之前寫入的事務應用到數據文件中。因此有一個問題:系統重啟之后,怎么知道checkpoint做到哪兒了?