MySQL - InnoDB vs MyISAM

25
昨天我读了一篇文章 (http://blogs.sitepoint.com/2010/11/19/mysql-mistakes-php-developers/),它写了以下内容:
MySQL 有很多数据库引擎,但你最有可能遇到的是 MyISAM 和 InnoDB。
默认情况下使用 MyISAM。然而,除非你创建的是非常简单或实验性的数据库,否则这几乎肯定是错误的选择!MyISAM 不支持外键约束或事务,这对于数据完整性是必不可少的。此外,每当插入或更新记录时,整个表都会被锁定:随着使用量的增长,这会对性能产生不利影响。
解决方法很简单:使用 InnoDB。
我一直使用 MyISAM 是因为它是默认设置。你怎么看?
如果我要升级到 InnoDB,在 phpMyAdmin 中,我可以只编辑每个表并将其更改为 InnoDB,还是需要执行更复杂的过程?
谢谢!

1
我认为这是这个问题这个问题的重复。 :) - Dan J
1
MyISAM不再是默认引擎了http://dev.mysql.com/doc/refman/5.5/en/innodb-storage-engine.html。如果仅仅因为它是默认引擎而选择一种架构/引擎,那么我对你的理性思考持保留意见。 - Jon Black
2个回答

31

是的,如果你愿意,你可以像使用旧内衣裤一样随意更换引擎,而且不会有太多麻烦。只需在phpmyadmin中进行更改即可。

但是我不建议为了更改而更改。需要使用外键吗?那就进行更改。需要行级锁定而不是表级锁定吗?那就进行更改。

值得注意的是,使用MyISAM也有很好的理由。看看全文索引吧。这是InnoDB无法做到的。

更新

从MySQL 5.6开始,InnoDB表也实现了全文索引。这里是手册


+1 - 在这个时候,我不会仅仅为了改变而改变它。只有在需要InnoDB的功能时才进行更改。话虽如此,我自己已经很长时间没有使用MyISAM了。 - prodigitalson
1
我几乎专门使用InnoDB。除了前几天我需要一个FULLTEXT索引的时候。;) - Stephen
4
这个问题上有很多不同的看法。我认为我会选择MyISAM作为我的数据库,因为在过去的7年里,我从来没有遇到过任何问题 :) - Ben Sinclair
4
需要注意的是,从MySQL 5.6开始,InnoDB确实支持全文搜索。 - Chris

1

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