当我们构建集群存储时,MyISAM引擎比InnoDB更优选吗?为什么会这样?

Rom*_*man 3 mysql myisam innodb database-cluster

今天我在java开发人员的采访中听到这个.我必须列出MyISAM相对于InnoDB的一些优点以及为什么它仍然被广泛使用.他们正在等待我的回答作为这个问题的标题.

我从他们自己的答案中了解到:MyISAM没有外键,DB可以轻松集群(例如每个服务器一个表).但是为什么我们不能简单地创建没有外键的InnoDB表?这个解释听起来很奇怪..

Gar*_*son 8

这里没有银弹答案.在决定使用哪个特定应用程序之前,您需要了解每个的优缺点.

InnoDB的:

  • 支持FK
  • 支持交易
  • 使用大内存缓冲区进行操作
  • 支持行级锁定
  • 但是具有更高的维护成本 - 您确实需要调整内存使用情况,配置表文件等.

MyISAM数据:

  • 有一堆InnoDB没有的特殊列功能,例如:
    • 全文索引
    • 空间列(我很确定这不适用于InnoDB)
  • 对于主要读取/附加用例非常快(用于更新,删除但不用于插入的表锁)
  • 通常也有更快的插入
  • 缓存内存中的索引(密钥缓冲区),但依赖于操作系统来缓冲实际的数据页

例如,我将InnoDB用于电子商务,用户数据库或任何我想要使用交易的东西.

对于数据仓库,日志记录,报告等,我可能会使用MyISAM.