选择myisam和innodb的场景有所不同

时间:2012-11-21 22:08:43

标签: mysql

我知道myiasm不支持像innodb这样的交易。

有人能给我一个例子,说明如何选择正确的数据库引擎会对事情的运作方式产生影响。

2 个答案:

答案 0 :(得分:2)

MyISAM使用表级锁定。 InnoDB是行级。

http://dev.mysql.com/doc/refman/5.0/en/internal-locking.html

答案 1 :(得分:1)

在许多情况下,MyISAM对于许多操作来说会更快两倍或更多,但如果你没准备好,你为这个速度付出的代价可能会相当高。 MySQL服务器进程的硬崩溃可能由许多因素引起,包括一个简单的断电情况,可能会破坏MyISAM表的可恢复性。 InnoDB表格更具抵抗力,通常可以在典型的最坏情况下以只读模式恢复,如果没有自动修复和恢复的话。

MyISAM更快的简单原因是它没有保留期刊而且不需要处理MVCC。不过,这些对大多数应用程序都很重要。

与往常一样,您应该及时备份所有数据。

我建议仅使用MyISAM获取具有极端性能问题的衍生数据。为此,您可以按需将源InnoDB表复制到MyISAM中,作为物化视图,或使用触发器保持同步。这对于使MyISAM充当InnoDB数据的高速缓存非常有用。

我不主张将表随机切换到MyISAM以获得更好的性能。