主要MyISAM 與 InnoDB兩個引擎,其主要區別如下:
InnoDB 支持事務,MyISAM 不支持,這一點是非常之重要。
事務是一種高級的處理方式,如在一些列增刪改中只要哪個出錯還可以回滾還原,而MyISAM 就不可以了;
MyISAM適合查詢以及插入為主的應用,InnoDB適合頻繁修改以及涉及到安全性較高的應用; InnoDB支持外鍵,MyISAM不支持;
MyISAM是默認引擎,InnoDB需要指定; InnoDB 不支持FULLTEXT 類型的索引; InnoDB中不保存表的行數,如select count() from table時,InnoDB;需要掃描一遍整個表來計算有多少行,但是MyISAM只要簡單的讀出保存好的行數即可。
注意的是,當count()語句包含where 條件時MyISAM也需要掃描整個表;
對于自增長的字段,InnoDB中必須包含只有該字段的索引,但是在MyISAM表中可以和其他字段一起建立聯合索引;
清空整個表時,InnoDB是一行一行的刪除,效率非常慢。MyISAM 則會重建表;
InnoDB 支持行鎖(某些情況下還是鎖整表,如 updatetable set a=1 where user like '%lee%'