mysql兩種經常使用存儲引擎myisam和innodb,myisam不支持事務;innodb支持事務。mysql
mysql存儲引擎不同,物理文件結構也是不同的:sql
myisam的數據庫的物理文件結構爲:數據庫
.frm文件:與表相關的元數據信息都存放在frm文件,包括表結構的定義信息等。各類存儲引擎都須要frm文件,而且存放於數據庫名目錄下。markdown
.myd文件:myisam存儲引擎專用,用於存儲myisam表的數據ide
.myi文件:myisam存儲引擎專用,用於存儲myisam表的索引相關信息日誌
innodb的數據庫的物理文件結構爲:索引
.frm文件事務
.ibd文件和.ibdata文件:it
這兩種文件都是存放innodb數據的文件,之因此用兩種文件來存放innodb的數據,是由於innodb的數據存儲方式可以經過配置來決定是使用共享表空間存放存儲數據,仍是用獨享表空間存放存儲數據。innodb
獨享表空間存儲方式使用.ibd文件,而且每一個表一個ibd文件
共享表空間存儲方式使用.ibdata文件,全部表共同使用一個ibdata文件
ib_logfiles文件及做用
這個是InnoDB的redolog,這個系列文件個數由參數innodb_log_files_in_group控制,若設置爲4,則命名爲ib_logfile0~3。
這些文件的寫入是順序、循環寫的,logfile0寫完從logfile1繼續,logfile3寫完則logfile0繼續。
ib_logfiles的做用,主要是在系統崩潰重啓時,做事務重作的。而在系統正常時,每次checkpoint時間點,會將以前寫入的事務應用到數據文件中。
日誌文件 功能
錯誤日誌 記錄啓動、中止、運行過程當中mysqld時出現的問題
通用日誌 記錄創建客戶端鏈接和執行的語句
二進制日誌 記錄更改數據的全部語句,還用於複製
慢查詢日誌 記錄執行時間超過long_query_time秒的全部查詢