显然两者都有其益处。 MyISAM很快但可能很容易被破坏,InnoDB很慢但由于交易和外键更稳定。因此,将两个引擎混合在一个数据库中可能会很好。如果可能的话?
答案 0 :(得分:18)
记住!可以在同一个数据库中混合表类型!事实上,它是推荐的,经常需要。但是,请务必注意,如果在加入这两种类型时遇到性能问题,请尝试将其中一种转换为另一种,然后查看是否可以修复它。这个问题并不经常发生,但已有报道。
答案 1 :(得分:5)
当然,这是可能的。
CREATE TABLE MyISAM_tbl(
....
)ENGINE=MyISAM;
CREATE TABLE InnoDB_tbl (
....
)ENGINE=InnoDB;
我一直这样做,因为我更喜欢InnoDB用于FK,但我有时需要MyISAM进行全文搜索。没问题。
答案 2 :(得分:1)
总之是的。 (CREATE TABLE允许您指定引擎类型。)
但是,在查询多个表类型时必须小心。 (例如,您无法利用MyISAM上的外键,也无法提交影响MyISAM表等的事务。)
从本质上讲,我怀疑这可能不是最好的方法。 (除非您只需要从数据库的其余部分中分割出一组已定义的表的事务,并且InnoDB太慢,否则获得更快的数据库服务器可能会减少痛苦。)