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

3

我想了解为什么即使在mysql服务器5.6版本及以上的情况下,MySQL仍然将其元数据库(“mysql”)表大多存储在MyISAM类型中,而他们又鼓励开发人员/用户使用InnoDB作为默认的数据库引擎,认为使用MyISAM已经过时?


1
你问错人了,应该去问开发者。(但我想他们可能想避免通过不兼容的更改破坏现有用户的数据库安装。) - Stephen C
2个回答

2
当然,没有人能代表开发团队说话,但是MyISAM似乎是这些表的最合适的选择
  • 没有真正需要行级锁定:几乎没有并发需求,因为很少有线程(通常只有一个管理员)同时写入该数据库。表级锁定应该足够。
  • 很少需要事务支持:典型的访问是只读的
  • 很少需要外键支持:结构是微不足道的,MySQL开发人员不需要保护引用完整性的保障(即使是聪明的管理员也不应该玩弄这个数据库:管理工具和命令的存在是有原因的)
  • 速度在这里很重要:MyISAM仍然比InnoDB稍快,特别是对于读取
  • 如果它没有出问题,就不要修复它

我可以看到切换到InnoDB的一个原因:由于其事务性质,它对崩溃的抵抗力和恢复能力更强


这个问题比你想象的要简单。由于技术原因,目前mysql/*表不能使用InnoDB引擎,Oracle正在努力修复这个问题。但是这不是一个简单的改变,需要一些时间来完成。 - akuzminsky
你为什么不把这个作为一个回答发出来,并附上一些支持这个说法的证据呢? - RandomSeed

1

是的,人们认为InnoDB比MyISAM更好,但这并不意味着MyISAM没有用处。

从一般意义上讲,InnoDB解决了大量MyISAM的限制问题,这对于人们有很大的需求池是很好的;但在某些情况下,MyISAM比InnoDB表现更好。

例如,如果您的系统以读取为主,MyISAM会胜过InnoDB,在许多其他情况下也是如此;此外,它提供了向想要升级到新版本MySQL的旧应用程序的兼容性,这是MySQL社区支持所有新版本的最重要原因之一。

如果您想要比较两者,请阅读以下链接以获取更多信息。

何时使用MyISAM和InnoDB?

MyISAM和InnoDB的比较


不是与所问问题有关的答案。 - Ulrich Thomas Gabor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接