为什么 MySQL mysql table 在鼓励使用 InnoDB 的情况下仍然是 MYISAM?

Why MySQL mysql table is still is MYISAM when InnoDB is encourage to use?

我想知道为什么即使使用版本 mysql 服务器 5.6+

MySQL 将他们的元数据库('mysql')表主要存储在 MyISAM 类型中,而他们自己鼓励 developers/users 使用 InnoDB 作为默认数据库引擎并认为使用 MyISAM 已过时了?

是的,人们认可 InnoDB 而不是 MyISAM,但这并不意味着 MyISAM 没用。

从一般意义上讲,InnoDB 解决了大量问题,这些问题是 MyISAM 的局限性,这有利于满足人们的大量需求;但在某些情况下,MyISAM 比 InnoDB 工作得更好。

例如,如果您的系统是读取密集型的,则 MyISAM 接管 InnoDB 以及许多其他情况;此外,它还为想要升级到新版本 MySQL 的旧应用程序提供兼容性,这是 MySQL 社区在所有新版本中支持它的最大原因之一。

如果您想对两者进行比较,您可能需要阅读以下链接以获取更多信息。

When to use MyISAM and InnoDB?

Comparison between MyISAM and InnoDB

当然没有人可以代表开发团队,但是MyISAM seems to be the most appropriate choice for these tables :

  • 没有真正需要行级锁定:几乎没有并发需要,因为很少有线程(通常是一个:管理员)应该一次写入此数据库。 Table 级锁定就足够了。
  • 很少需要交易:典型的访问是只读的
  • 几乎不需要外键支持:结构很简单,MySQL 开发人员不需要保护措施来维护参照完整性(即使是您,聪明的管理员也不应该 fiddle 对于这个数据库:管理工具和命令的存在是有原因的)
  • 速度在这里很重要:MyISAM 仍然比 InnoDB 稍快,尤其是读取
  • 如果它没坏,就不要修理它

虽然我可以看到一个切换到 InnoDB 的原因:its resistance to crashes and its ability to recover from one,因为它的事务性质。