这是我在 Stackoverflow 中阅读的一篇文章中学到的。
“我看到的第一个主要区别是 InnoDB 实现了行级锁,而 MyISAM 只能执行表级锁。您会在 InnoDB 中找到更好的崩溃恢复。但是,它没有 FULLTEXT 搜索索引,MyISAM 也是如此。InnoDB还实现了事务、外键和关系约束,而 MyISAM 没有。”
由于大多数站点需要表之间的关系以及站点搜索,他们使用哪个引擎?我应该选择哪一个?
我在 Percona 工作,这是一家领先的 MySQL 咨询和培训公司。我们推荐 InnoDB 作为存储引擎的默认选择,而 MyISAM 仅在可以证明它具有一些优势的特殊情况下推荐(即通过对您的应用程序使用两种存储引擎进行基准测试来证明它)。
自 2010 年 12 月起,InnoDB 已成为 MySQL 5.5 的默认存储引擎。
在 2013 年 2 月发布的 MySQL 5.6 中,InnoDB 现在支持自己的全文索引实现。但是大多数需要大规模全文搜索的网站发现使用 Sphinx 搜索仍然更胜一筹。另请参阅我的演示文稿Full Text Search Throwdown。
InnoDB 不仅具有您列出的优势,而且在许多基准测试中也比 MyISAM 更快。许多年前,曾经有一段时间,人们认为 MyISAM 是更快的存储引擎。但是 InnoDB 已经收到了大量的工作来提高它的性能和可扩展性。
InnoDB 需要更多地注意调整配置变量,因为默认值并不完全适合生产网站使用。我有另一个演示文稿,InnoDB 状态指南,它描述了一些最重要的调优选项。