当InnoDB被鼓励使用时,为什么MySQL mysql表仍然是MYISAM?

时间:2015-09-21 07:31:33

标签: mysql innodb myisam

我想知道为什么即使使用版本mysql server 5.6+

当MySQL自己鼓励开发人员/用户将InnoDB用作默认的数据库引擎并被认为过时使用MyISAM时,MySQL主要以MyISAM类型存储他们的元数据库(' mysql')表?

2 个答案:

答案 0 :(得分:2)

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

  • 没有真正需要行级锁定:几乎没有任何并发​​需求,因为很少有线程(通常是一个:管理员)应该一次写入这个数据库。表级锁定就足够了。
  • 非常罕见的交易需求:典型访问是只读的
  • 几乎不需要支持外键:结构很简单,MySQL开发人员不需要保护参照完整性(即使是你,智能管理员,也不应该使用这个数据库:管理工具和命令存在的原因)
  • 速度在这里很重要:MyISAM仍然比InnoDB略快,特别是对于读取
  • 如果它没有破坏,请不要修理

由于其交易性质,我可以看到切换到InnoDB的一个原因:its resistance to crashes and its ability to recover from one

答案 1 :(得分:1)

是的,人们支持InnoDB而非MyISAM,但这并不意味着MyISAM无用。

一般来说,InnoDB解决了一大堆问题,这些问题是MyISAM的局限性,这些问题对于人们拥有的大量需求是有益的;但在某些情况下,MyISAM比InnoDB效果更好。

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

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

When to use MyISAM and InnoDB?

Comparison between MyISAM and InnoDB