MyISAM和InnoDB表在一个数据库中

jac*_*ack 8 mysql myisam innodb

我有一个包含大约30个表的数据库,其中5个表是写密集型的.

我在考虑

  1. 转换5个写密集型表以使用InnoDB引擎,并将其余部分保留在MyISAM引擎上

  2. 转换所有表以使用InnoDB引擎.

我想知道哪种方法更好?

更具体

我想在MyISAM引擎上保留一些表的原因是它们中的一些有大约1,000,000行.我不确定转换为InnoDB后这些表上的"SELECT COUNT(*)"查询会有多慢.

我没有做过测试.在开始转换之前,我更喜欢从你们这里得到一些建议.

Bra*_*ore 12

这些天,我总是默认使用InnoDB,特别是在你提到的写密集表中,MyISAM遭受全表锁定.这是一个比较点.

使用MyISAM的原因:

  • 对于选择重的负载,表格非常快
  • 表级锁定限制了它们在写密集型多用户环境中的可伸缩性.
  • 最小的磁盘空间消耗
  • 全文索引
  • 合并和压缩表.

使用InnoDB的原因:

  • ACID交易
  • 行级锁定
  • 一致的读取 - 允许您达到出色的读写并发性.
  • 主键聚类 - 在某些情况下可提供出色的性能.
  • 外键支持.
  • 索引和数据页面都可以缓存.
  • 自动崩溃恢复 - 如果MySQL关闭不洁的InnoDB表仍将 - 恢复到一致状态 - 不像MyISAM那样需要检查/修复.
  • 与非事务性存储引擎相比,所有更新都必须通过InnoDB中的事务引擎,这通常会降低性能.

以上内容取自该网站,似乎不再有效.