发布于 2012-09-27 13:33:44
InnoDB和MyISAM (“在设计表或数据库方面”)之间的主要区别是对“引用完整性”和“事务”的支持。
如果需要数据库强制外键约束,或者需要数据库支持事务(即,由两个或多个DML操作作为单个工作单元处理的更改,所有更改要么应用,要么恢复所有更改),那么您将选择InnoDB引擎,因为MyISAM引擎中缺少这些功能。
这是两个最大的区别。另一个很大的区别是并发性。使用MyISAM,DML语句将获得表上的独占锁,当该锁被持有时,任何其他会话都不能对该表执行SELECT或DML操作。
您询问的这两个特定引擎(InnoDB和MyISAM)具有不同的设计目标。MySQL还有其他的存储引擎,它们都有自己的设计目标。
因此,在InnoDB和MyISAM之间进行选择时,第一步是确定您是否需要InnoDB提供的特性。如果不是,那么MyISAM就可以考虑了。
如果没有对问题空间的更详细的讨论,对差异的更详细的讨论是相当不切实际的(在本论坛中)。应用程序将如何使用数据库、多少个表、表的大小、事务负载、select、insert、updates、并发要求、复制特性等。
数据库的逻辑设计应该以数据分析和用户需求为中心;稍后会选择使用关系数据库,然后选择MySQL作为关系数据库管理系统,然后为每个表选择存储引擎。
发布于 2013-04-29 10:55:58
MYISAM:
INNODB:
进行提交和回滚
https://stackoverflow.com/questions/12614541
复制相似问题