什么情况下应该使用MYISAM和INNODB Engine

In Which situation MYISAM AND INNODB Engine should be used

给我一些我能理解myisam和innodb引擎使用的实际例子

MyISAM 存储引擎显然正在逐步淘汰,我预计它最终会从 MySQL 中删除。

如果您想继续升级到更新版本的 MySQL,您应该将数据库设计为从不 使用 MyISAM。

MyISAM 不支持以下任何一种:

  • 酸性物质
  • 外键
  • 交易
  • 聚簇索引
  • 行级锁定
  • 并发更新
  • 崩溃恢复
  • 数据缓存(只缓存索引;数据由文件系统缓存)
  • 分区(在 MySQL 8.0 中)

据我所知,MySQL 工程团队没有对 MyISAM 进行改进。

从 MySQL 5.7 开始,

MyISAM 仍用于 mysql.* 模式中的授权 table,但在 8.0 中,那些 table 都存储在InnoDB.

在我的上一个项目中,我只将 MyISAM 用于一个 table。 table 存储了 50 亿行,需要存储在磁盘有限 space 且没有升级计划或预算的服务器上。 MyISAM 将此 table 存储为 InnoDB 的一半 space(您的情况可能会获得不同的存储比率,具体取决于数据类型、索引和其他因素)。使用 MyISAM,我可以将此 table 存储在服务器上,直到它可以升级为止。使用 InnoDB,table 会太大。