天天看點

mysql MyISAM 和 InnoDB

選擇正确的存儲引擎

在 MySQL 中有兩個存儲引擎 MyISAM 和 InnoDB,每個引擎都有利有弊。酷殼以前文章《MySQL: InnoDB 還是 MyISAM?》讨論和這個事情。

MyISAM 适合于一些需要大量查詢的應用,但其對于有大量寫操作并不是很好。甚至你隻是需要update一個字段,整個表都會被鎖起來,而别的程序,就算是讀程序都無法操作直到讀操作完成。另外,MyISAM 對于 SELECT COUNT(*) 這類的計算是超快無比的。

InnoDB 的趨勢會是一個非常複雜的存儲引擎,對于一些小的應用,它會比 MyISAM 還慢。他是它支援“行鎖” ,于是在寫操作比較多的時候,會更優秀。并且,他還支援更多的進階應用,比如:事務。

下面是MySQL的手冊

  • target=”_blank”MyISAM Storage Engine
  • InnoDB Storage Engine

d>myisam引擎,表級鎖,單鎖開銷小,但影響範圍大,适合讀多寫少的表,不支援事物日志;表鎖定不存在死鎖

e>innodb引擎,行級鎖,鎖定行的開銷要比鎖定全表要大,但影響範圍小,适合寫操作比較頻繁的資料表;行級鎖可能存在死鎖。

InnoDB 還是 MyISAM?mysql 中InnoDB和MyISAM的差別細節