显然,两者都有各自的好处。MyISAM 速度快但可能很容易损坏,InnoDB 速度慢但由于事务和外键而更稳定。因此,将两种引擎混合在一个数据库中可能会很好。如果有可能吗?
问问题
5671 次
3 回答
19
记住!在同一个数据库中混合表类型是可以的!事实上,它是推荐的并且经常需要。但是,重要的是要注意,如果在加入这两种类型时遇到性能问题,请尝试将一种转换为另一种,看看是否能解决问题。此问题不经常发生,但已报告。
于 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 回答