MyISAM與innoDB儲存引擎有何差別

大飛_dafei發表於2018-11-09

A、兩者在檔案構成上有區別;
B、InnoDB支援事務處理,MyISAM不支援;
C、對無WHERE子句的COUNT(*)操作的不同:MyISAM中儲存了該值,直接讀取,InnoDB需要作全表掃描;
D、鎖的區別:InnoDB支援表級鎖和行級鎖,MyISAM只支援表級鎖;
E、索引會快取資料,而MYISAM不會;
F、INNODB不區分char和varchar;
G、INNODB支援hash索引,而MYISAM不支援;
H、InnoDB不支援FULLTEXT型別的索引;
I、InnoDB 中不儲存表的具體行數,也就是說,執行select count(*) from
table時,InnoDB要掃描一遍整個表來計算有多少行,但是MyISAM只要簡單的讀出儲存好的行數即可。注意的是,當count(*)語句包含
where條件時,兩種表的操作是一樣的;
J、對於AUTO_INCREMENT型別的欄位,InnoDB中必須包含只有該欄位的索引,但是在MyISAM表中,可以和其他欄位一起建立聯合索引;
K、DELETE FROM table時,InnoDB不會重新建立表,而是一行一行的刪除;
L、LOAD TABLE FROM
MASTER操作對InnoDB是不起作用的,解決方法是首先把InnoDB表改成MyISAM表,匯入資料後再改成InnoDB表,但是對於使用的額外的InnoDB特性(例如外來鍵)的表不適用。

相關文章