MyISAM和InnoDB有什么区别?
这个问题在这里已经有了答案:
InnoDB和MyISAM之间的主要差异(“你关于设计表或数据库的问题”)是对“参照完整性”和“交易”的支持。
如果您需要数据库来强制执行外键约束,或者您需要数据库来支持事务(即将两个或多个DML操作所做的更改作为单个工作单元处理,并且应用所有更改或者还原所有更改)那么您将选择InnoDB引擎,因为这些功能在MyISAM引擎中不存在。
这是两个最大的区别。 另一个重大差异是并发性。 使用MyISAM,DML语句将在表上获得排它锁,并且在该锁被保持的情况下,没有其他会话可以在该表上执行SELECT或DML操作。
你问的两个特定引擎(InnoDB和MyISAM)有不同的设计目标。 MySQL也有其他的存储引擎,有他们自己的设计目标。
因此,在InnoDB和MyISAM之间进行选择时,首先要确定是否需要InnoDB提供的功能。 如果没有,那么MyISAM就要考虑了。
关于差异的更详细的讨论是相当不切实际的(在这个论坛中)缺少关于问题空间的更详细的讨论......应用程序将如何使用数据库,多少表格,表格的大小,事务负载,选择的卷,插入,更新,并发需求,复制功能等。
数据库的逻辑设计应以数据分析和用户需求为中心; 使用关系型数据库的选择会晚一些,甚至以后会选择MySQL作为关系数据库管理系统,然后选择每个表的存储引擎。
MYISAM:
INNODB: