10

显然,两者都有各自的好处。MyISAM 速度快但可能很容易损坏,InnoDB 速度慢但由于事务和外键而更稳定。因此,将两种引擎混合在一个数据库中可能会很好。如果有可能吗?

4

3 回答 3

19

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

取自MySQL - InnoDB vs MyISAM

于 2009-12-28T16:28:33.450 回答
6

当然,这是可能的。

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

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

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

于 2009-12-28T16:29:27.067 回答
1

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

但是,当您跨多种表类型进行查询时,您必须小心。(例如,您不能利用 MyISAM 上的外键,也不能提交影响 MyISAM 表的事务等)

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

于 2009-12-28T16:32:26.043 回答