繁体   English   中英

MyISAM和InnoDB表在一个数据库中

[英]MyISAM and InnoDB tables in one database

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

我在考虑

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

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

我想知道哪种方法更好?

更加具体

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

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

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

使用MyISAM的原因:

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

使用InnoDB的原因:

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

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

每个人的利弊。

对于(1)专业人士:更少的磁盘空间使用,myisam对于读取繁重的访问模式来说要快得多

缺点:必须在innodb缓冲区和myisam密钥缓冲区之间共享内存。 innodb表比他们的myisam表大约4倍。 程序代码必须适应死锁处理。

请记住,如果您要更改索引列或主键,innodb也会锁定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM