-1

我知道 myiasm 不支持像 innodb 这样的事务。

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

4

2 回答 2

2

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

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

于 2012-11-21T22:12:41.577 回答
1

在许多情况下,MyISAM 对许多操作的速度会快两倍或更多,但如果您没有做好准备,您为这种速度付出的代价可能是相当可观的。MySQL 服务器进程的硬崩溃可能是由多种因素引起的,包括简单的断电情况,可能会损坏 MyISAM 表而无法恢复。InnoDB 表的抵抗力更强,通常可以在典型的最坏情况下以只读模式恢复,如果不为您自动修复和恢复。

MyISAM 更快的简单原因是它不保留日志并且不需要处理MVCC。不过,这些东西对于大多数应用程序都很重要。

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

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

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

于 2012-11-21T22:14:29.747 回答