mysql - 当我们构建集群存储时,MyISAM 引擎是否比 InnoDB 更可取?为什么会这样?

标签 mysql innodb myisam database-cluster

我今天在面试 Java 开发人员时听到了这个。我不得不列出 MyISAM 相对于 InnoDB 的一些优势,以及为什么它仍然被广泛使用。作为这个问题的标题,他们正等着听到我的答案。

正如我从他们自己的回答中了解到的那样:MyISAM 没有外键,数据库可以很容易地集群(例如每个服务器一个表)。但是为什么我们不能简单地创建没有外键的 InnoDB 表呢?这个解释对我来说听起来很奇怪..

最佳答案

这里没有 Elixir 。在决定将哪一种用于任何特定应用程序之前,您需要了解每种方法的优缺点。

InnoDB:

  • 支持 FK 的
  • 支持交易
  • 使用大内存缓冲区进行操作
  • 支持行级锁定
  • 但维护成本要高得多——您确实需要调整内存使用、配置表文件等。

MyISAM:

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

例如,我会将 InnoDB 用于电子商务、用户数据库或任何我想在其中使用事务的事物。

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

关于mysql - 当我们构建集群存储时,MyISAM 引擎是否比 InnoDB 更可取?为什么会这样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1647023/

相关文章:

mysql - 安装 mysql2 gem

mysql - MySQL 语句的不同格式/效率

php - 将一行添加到另一行

mysql - 在 MySQL(InnoDB)中删除和插入需要很长时间

mysql - 将 Joomla 表引擎更改为 InnoDB

MySQL 备份 : Can I copying individual MyISAM table files to another server with different MySQL version and different OS?

mysql - ~200 万行 MySQL MyISAM 表上的 150ms

python - 在 Mac OS 10.6.6 中使用 python-mysql 配置 django 时出错

mysql - InnoDB CREATE TABLE 抛出错误 150

mysql - 为什么 Next-Key lock 这么叫呢?