InnoDB 和 MyISAM 有什么区别?

17 mysql innodb myisam

我使用 MySQL 作为我当前 Web 项目的数据库。我是 MySQL 的新手。请向我解释 InnoDB 和 MyISAM 之间的区别。

Mar*_*son 14

ISAM = 索引顺序访问方法,本质上是一个平面文件(对于那些能记住的 DBA,想想 Btrieve 或 B-Tree)。这是一项非常古老的技术 - 但不要因为它而放弃使用它。因为它是一个平面文件(稍后会详细介绍),它不是关系文件,因此不是 RDBMS,因此在某些情况下更合适。

InnoDB 是您很可能熟悉的完整 RDBMS。MyISAM 可以通过添加在顶部的另一个层来维护您的链接、逻辑和引用完整性,从而看起来是相关的。

如果您有很多记录(比如 2000 万条),并且这些记录大多是独立的(即您不需要做很多链接来检索相关数据),那么 ISAM 非常棒。它非常依赖索引,如果您没有正确的索引,请为非常长的查询时间做好准备。举个例子:我们有一个包含 2000 万条记录的 Btrieve ISAM 表,根据准确的索引检索和过滤数据几乎是即时的。使用错误的索引实际上是 15 分钟。

如果您有很多关系链接,InnoDB 非常适合。表 A 引用了表 B 中的一个字段,它引用了表 C 和 D。 InnoDB 可以使用各种不错的连接方法(哈希连接等)获取这些记录,而 ISAM 数据库必须为每个单独的查询运行多个子查询行并手动匹配记录。

如果你想要更多的细节,你真的必须上一门数据库课程!


Joh*_*ers 5

最根本的是 InnoDB 是事务性的。MyIsam 不是。MyIsam 通常要快一些,所以如果您不需要交易,这通常是您的最佳选择。有关详细说明,您应该阅读 MySQL 文档。