2011年8月15日 星期一

[DB]MyISAM vs. InnoDB

InnoDB 不支援全文索引,而MyISAM有支援;但如果資料量大的話,建議使用InnoDB,因為它支援記錄恢復的功能。
然而InnoDB沒有資料數目記錄的功能,COUNT()運算會直接去算整張表資料數目,會造成龐大的負擔。而MyISAM因有記錄資料數目,所以執行COUNT()運算會非常快;但是COUNT()運算有加上where條件時,InnoDB與MyISAM都會去算整張表的資料數。
但是MyISAM不支援Foreign Key。對於這點,InnoDB則是有支援的。
MyISAM在Insert速度快;而InnoDB在Update速度較快。
在小型應用上,建議使用MyISAM效能會比較好。而大量資料且要有Foreign Key支援的話,請使用InnoDB。

最後我整理一張表格讓大家比較好理解一些。

資料庫引擎名稱
優點
缺點
MyISAM
l   對不具where語句的COUNT()運算快。
l   適合小型資料庫。
l   Insert運算速度快。
l   支援全文索引。
l   不支援Foreign key
l   記錄恢復功能差,重建速度慢。
InnoDB
l   支援Foreign Key
l   具有良好的記錄恢復功能,重建記錄速度快。
l   適合大量資料處理。
l   Update運算速度快。
l   對不具where語句的COUNT()運算慢。
l   不支援全文索引。



Reference

  1. MyISAM與InnoDB筆記
  2. [ 資訊 ] [ MySQL ] MyISAM 與 InnoDB 性能比較
  3. 淺談MySQL存儲引擎選擇 InnoDB還是MyISAM


沒有留言:

張貼留言