混合使用MyISAM和InnoDB引擎进行数据库设计

4

我的一个朋友是一名DBA,他评论说在MySQL中设计模式时混合使用MyISAM和InnoDB相当普遍。

我的问题是,如果这是真的,那么它有多好?它是否会对可维护性、可扩展性等产生影响?

3个回答

8
通常情况下,使用MyISAM的好处已经很少了。MySQL的新版本(5.5+)已经扩展了InnoDB,支持了之前只能在MyISAM上使用的所有功能(如全文和地理空间索引),而且如果正确配置,InnoDB的性能通常比MyISAM好得多。
除非您正在使用旧版本的MySQL,或者您有一个非常充分的理由这样做,否则我建议在任何新数据库设计中都只使用InnoDB。

4
在我看来,MySQL的一个可怕之处在于它让你在速度和全文索引(MyISAM)与参照完整性和事务(InnoDB)之间做出选择。如果可以的话,我强烈建议切换到PostgreSQL:除了其他一些优点外,你可以在一个存储引擎中获得速度、全文索引、事务和参照完整性。(对于新项目,我已经完全不再使用MySQL了。)
如果你必须坚持使用MySQL,我建议在所有表上使用InnoDB,除非你有特殊的理由不这样做。

有点跑题,你有没有一个基准统计数据,清楚地表明PostgreSQL比MySQL更快?这对我很有帮助。 - intellidiot
我实际上没有说它是。但既然你问了,基准测试似乎表明它比InnoDB更快(并且比MyISAM更强大)。我现在似乎找不到实际数字,但请查看http://www.wikivs.com/wiki/MySQL_vs_PostgreSQL。还要注意的是,PostgreSQL可以进行反向索引扫描,而MySQL不能。 - Marnen Laibow-Koser
1
你所描述的一些情况实际上已经不再准确了——在MySQL 5.5+中,InnoDB通常比MyISAM更快,并支持全文索引。 - user149341
谢谢,这很好知道。它是否支持反向索引扫描和事务性DDL? - Marnen Laibow-Koser

2

实际操作中需要注意的是:

我曾多次进行此操作。特别是在一个系统中,查询以myisam方式锁定整个表格,我们将一些关键表格转换为innodb,这样它们就可以按行级别锁定。这消除了一些瓶颈,并且在此更改后,我与公司又共事了18个月,没有出现该解决方案的任何问题。被支持的应用程序也相当密集地使用数据库,因此任何不足之处都很快会显露出来。


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