首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MyISAM和InnoDB有什么不同?

MyISAM和InnoDB有什么不同?
EN

Stack Overflow用户
提问于 2012-09-27 13:18:05
回答 2查看 273.9K关注 0票数 271

我知道以前也有人问过这个问题,但大多数时候是针对特定的数据库或表提出的。我在这个网站上找不到一个答案来描述这两个引擎及其不同之处,而不考虑某人的特定数据库。

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

MyISAMInnoDB之间有什么区别,当我试图在两者之间做出选择时,我应该寻找什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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作为关系数据库管理系统,然后为每个表选择存储引擎。

票数 432
EN

Stack Overflow用户

发布于 2013-04-29 10:55:58

MYISAM:

  1. MYISAM支持表级锁定
  2. MYISAM专为提高速度而设计
  3. MyISAM不支持外键,因此我们将MySQL与MyISAM一起称为DBMS
  4. MyISAM使用三个不同的文件将其表、数据和索引存储在磁盘空间中。( tablename.MYI)
  5. MYISAM、tablename.FRM、tablename.MYD不支持事务。不能使用MYISAM提交和回滚。一旦你发出一个命令,它就完成了。
  6. MyISAM支持全文搜索
  7. 你可以使用MyISAM,如果表是比较静态的,有大量的select和较少的update和delete。

INNODB:

  1. InnoDB支持行级Locking
  2. InnoDB为处理大量数据时的最大性能而设计
  3. InnoDB支持外键,因此我们将MySQL与InnoDB一起称为关系数据库
  4. InnoDB将其表和索引存储在RDBMS中支持事务。您可以使用InnoDB

进行提交和回滚

票数 350
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12614541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档