InnoDB:MySQL默認的事務型引擎,也是最重要和使用最普遍的存儲引擎。它被設計成爲大量的短時間事務,短時間事務大部分狀況下是正常提交的,不多被回滾。InnoDB的性能與自動崩潰恢復的特性,使得它在非事務存儲需求中也很流行。除非有很是特別的緣由須要使用其餘的存儲引擎,不然應該優先考慮InnoDB引擎。html
MyISAM:在MySQL 5.1 及以前的版本,MyISAM是默認引擎。MyISAM提供的大量的特性,包括全文索引、壓縮、空間函數(GIS)等,但MyISAM並不支持事務以及行級鎖,並且一個毫無疑問的缺陷是崩潰後沒法安全恢復。mysql
InnoDB:支持sql
MyISAM:不支持數據庫
InnoDB:支持行鎖、表鎖。行鎖是實如今索引上的,若是沒有索引,就無法使用行鎖,將退化爲表鎖。安全
MyISAM:支持表鎖。併發
InnoDB:必須有,沒有指定會默認生成一個隱藏列做爲主鍵函數
MyISAM:能夠沒有性能
InnoDB:彙集索引,使用 B+ 樹做爲索引結構,數據文件和索引綁在一塊兒,必需要有主鍵。主鍵索引一次查詢;輔助索引兩次查詢,先查詢主鍵,再查詢數據;.net
MyISAM:非彙集索引,使用 B+ 樹做爲索引結構,索引和數據文件是分離的。主鍵索引和輔助索引是獨立的。設計
InnoDB:支持
MyISAM:不支持
InnoDB:必須包含只有該字段的索引。引擎的自動增加列必須是索引,若是是組合索引也必須是組合索引的第一列。
MyISAM:能夠和其餘字段一塊兒創建聯合索引。引擎的自動增加列必須是索引,若是是組合索引,自動增加能夠不是第一列,他能夠根據前面幾列進行排序後遞增。
InnoDB:frm是表定義文件,ibd是數據文件。支持兩種存儲方式:
innodb_data_file_path
和 innodb_data_home_dir
參數設置共享表空間的位置和名字,通常共享表空間的名字叫 ibdata1-n
。MyISAM:frm是表定義文件,myd是數據文件,myi是索引文件。支持三種存儲格式:靜態表(默認,注意數據末尾不能有空格,會被去掉。)、動態表、壓縮表。
InnoDB:沒有保存。select count(*) from table;會掃描全表。
MyISAM:保存。select count(*) from table;會直接取出該值。
注:但加了 where 條件後,二者處理方式同樣,都是掃描全表。
InnoDB:5.7及之後版本支持。
MyISAM:支持。
InnoDB:
MyISAM: