开发者社区> 问答> 正文

MyISAM和InnoDB有什么区别?

我知道以前曾有人问过这个问题,但大多数时候都是针对特定的数据库或表提出这个问题。我无法在此站点上找到描述这两个引擎及其区别的答案,而不必顾及某人的特定数据库。

我希望将来能够在设计表或数据库方面做出更明智的决定,因此我正在寻找有关两个存储引擎之间差异的全面答案。

MyISAM和InnoDB之间有什么区别,当试图在彼此之间做出选择时我应该寻找什么?

展开
收起
保持可爱mmm 2020-05-11 17:32:05 390 0
1 条回答
写回答
取消 提交回答
  • InnoDB和MyISAM之间的主要区别(“您询问的有关设计表或数据库的问题”)是对“参照完整性”和“事务”的支持。

    如果您需要数据库来强制执行外键约束,或者您需要数据库来支持事务(即,由两个或多个DML操作进行的更改作为单个工作单元处理,则所有更改都已应用,或者所有更改都已还原)那么您将选择InnoDB引擎,因为MyISAM引擎缺少这些功能。

    这是两个最大的区别。另一个大差异是并发性。使用MyISAM,DML语句将在表上获得排他锁,并且在保持该锁的同时,没有其他会话可以在表上执行SELECT或DML操作。

    您询问的那两个特定引擎(InnoDB和MyISAM)具有不同的设计目标。MySQL还具有其他具有自己的设计目标的存储引擎。

    因此,在InnoDB和MyISAM之间进行选择时,第一步是确定您是否需要InnoDB提供的功能。如果没有,那么MyISAM就可以考虑了。

    缺少关于问题空间的更详细的讨论,对于差异的更详细的讨论是不切实际的……应用程序将如何使用数据库,多少个表,表的大小,事务负载,select的数量,插入,更新,并发要求,复制功能等。

    数据库的逻辑设计应围绕数据分析和用户需求进行;使用关系数据库的选择将在以后出现,甚至更晚时将选择MySQL作为关系数据库管理系统,然后为每个表选择一个存储引擎。来源:stack overflow

    2020-05-11 17:32:26
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载