【发布时间】:2014-09-19 11:25:32
【问题描述】:
我使用 php 编写了一个在线商店脚本。
一些脚本,例如使用 MyISAM 引擎的 opencart 和使用 InnoDb 的脚本。
现在我不知道使用哪个引擎? InnoDb 还是 MyISAM?
【问题讨论】:
标签: php mysql innodb myisam php-5.4
我使用 php 编写了一个在线商店脚本。
一些脚本,例如使用 MyISAM 引擎的 opencart 和使用 InnoDb 的脚本。
现在我不知道使用哪个引擎? InnoDb 还是 MyISAM?
【问题讨论】:
标签: php mysql innodb myisam php-5.4
这完全取决于您的观点...功能方面... InnoDb 支持表关系而 MyISAM 不支持...但是 MyISAM 支持 InnoDb 不支持的全文搜索
【讨论】:
InnoDB 和 MyISAM(“关于设计表或数据库”你问过)支持“参照完整性”和“事务”。
如果您需要数据库强制执行外键约束,或者您需要数据库支持事务(即两个或多个 DML 操作所做的更改作为单个工作单元处理,所有更改要么应用,要么所有更改已恢复)然后您将选择 InnoDB 引擎,因为 MyISAM 引擎没有这些功能。
这是最大的两个区别。另一个很大的区别是并发性。使用 MyISAM,DML 语句将获得表上的排他锁,并且在持有该锁时,没有其他会话可以对表执行 SELECT 或 DML 操作。
您询问的这两个特定引擎(InnoDB 和 MyISAM)具有不同的设计目标。 MySQL 也有其他存储引擎,有自己的设计目标。
因此,在 InnoDB 和 MyISAM 之间进行选择时,第一步是确定您是否需要 InnoDB 提供的功能。如果没有,那么可以考虑使用 MyISAM。
【讨论】: