我能在一个数据库中同时使用InnoDB和MyISAM表吗?

10

显然两者都有其好处。MyISAM速度快但容易受损,InnoDB虽然慢但由于事务和外键更稳定。因此,在一个数据库中混合使用这两个引擎可能是不错的选择。如果可以的话?

3个回答

19
记住!在同一个数据库中混合使用不同类型的表是可以的!事实上,这是推荐并经常需要的。然而,需要注意的是,如果在连接两种类型的表时遇到性能问题,请尝试将其中一种转换为另一种类型,看看是否可以解决问题。这种情况并不经常发生,但已有报告。
取自MySQL - InnoDB vs MyISAM

1
可以像你说的那样混合使用表格类型,但在事务中混合使用表格类型应该避免。 - ovais.tariq

6
当然可以实现这个功能。
CREATE TABLE MyISAM_tbl(
    ....
)ENGINE=MyISAM;

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

我经常这样做,因为我更喜欢在外键中使用InnoDB引擎,但有时需要用MyISAM引擎进行全文搜索。从未遇到过问题。


1

简而言之, 是的。(CREATE TABLE 允许您指定引擎类型。)

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

本质上,我怀疑这可能不是最好的方法。(除非您只需要针对一组从数据库其余部分分段的表进行事务处理,且 InnoDB 太慢,则获取更快的数据库服务器可能会更轻松。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接