我可以在InnoDB引擎上使用一些表,在MySQL数据库上使用MyIsam吗?

时间:2013-07-31 06:42:26

标签: mysql innodb myisam

我读到Innodb更适合在同时获得大量插入记录的表上使用。我的应用程序每秒获得大约50条记录。所以对于这些表我应该使用Innodb,对吧?

另一方面,我有一些仅用于选择的表,它们几乎没有更新或几乎没有新的插入。 MyIsam选择速度更快吗? 如果是这样的话,最好是把一些表放在MyIsam上,有些放在Innodb上,还是应该使用相同引擎的所有表?

我的应用程序还搜索了我想要在Innodb中传递的表格。我该怎么办?

3 个答案:

答案 0 :(得分:2)

你可以查看这些:

  

使用MyISAM的原因:

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

使用InnoDB的原因:

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

引自here

以及最后一部分:

  

记住!可以在同一个数据库中混合表类型!事实上,它是推荐的,经常需要。但是,请务必注意,如果在加入这两种类型时遇到性能问题,请尝试将其中一种转换为另一种,然后查看是否可以修复它。这个问题并不经常发生,但已有报道。

引自here

我希望这就够了:D

答案 1 :(得分:1)

是的,你可以,但除非存在严重的性能瓶颈,否则我只会使用InnoDB

same question on SO

MySQL forum

答案 2 :(得分:1)

简而言之,是的,你可以混合搭配你的内心。

请记住以下几点:

InnoDB是ACID投诉。因此,您需要使用InnoDB的任何ACID功能。 MyISAM不支持很多东西,例如外键约束。

现在速度很难准确量化。根据执行路径,您可能会获得非常大或非常小的速度差异。

测试并检查这里没有正确或错误的答案。