我可以在ONE数据库中使用InnoDB和MyISAM表吗?

时间:2009-12-28 16:26:02

标签: mysql database-design innodb myisam

显然两者都有其益处。 MyISAM很快但可能很容易被破坏,InnoDB很慢但由于交易和外键更稳定。因此,将两个引擎混合在一个数据库中可能会很好。如果可能的话?

3 个答案:

答案 0 :(得分:18)

  

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

取自MySQL - InnoDB vs MyISAM

答案 1 :(得分:5)

当然,这是可能的。

CREATE TABLE MyISAM_tbl(
    ....
)ENGINE=MyISAM;

CREATE TABLE InnoDB_tbl (
    ....
)ENGINE=InnoDB;

我一直这样做,因为我更喜欢InnoDB用于FK,但我有时需要MyISAM进行全文搜索。没问题。

答案 2 :(得分:1)

总之是的。 (CREATE TABLE允许您指定引擎类型。)

但是,在查询多个表类型时必须小心。 (例如,您无法利用MyISAM上的外键,也无法提交影响MyISAM表等的事务。)

从本质上讲,我怀疑这可能不是最好的方法。 (除非您只需要从数据库的其余部分中分割出一组已定义的表的事务,并且InnoDB太慢,否则获得更快的数据库服务器可能会减少痛苦。)