MyISAM和InnoDB有什么区别?

这个问题在这里已经有了答案:

  • MyISAM与InnoDB 27的答案

  • InnoDB和MyISAM之间的主要差异(“你关于设计表或数据库的问题”)是对“参照完整性”和“交易”的支持。

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

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

    你问的两个特定引擎(InnoDB和MyISAM)有不同的设计目标。 MySQL也有其他的存储引擎,有他们自己的设计目标。

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

    关于差异的更详细的讨论是相当不切实际的(在这个论坛中)缺少关于问题空间的更详细的讨论......应用程序将如何使用数据库,多少表格,表格的大小,事务负载,选择的卷,插入,更新,并发需求,复制功能等。


    数据库的逻辑设计应以数据分析和用户需求为中心; 使用关系型数据库的选择会晚一些,甚至以后会选择MySQL作为关系数据库管理系统,然后选择每个表的存储引擎。


    MYISAM:

  • MYISAM支持表级锁定
  • MyISAM专为需要速度而设计
  • MyISAM不支持外键,因此我们称MYISAM为DBMS
  • MyISAM使用单独的三个不同文件将其表,数据和索引存储在磁盘空间中。 (tablename.FRM,tablename.MYD,tablename.MYI)
  • MYISAM不支持交易。 您不能使用MYISAM进行提交和回滚。 一旦你发出一个命令就完成了。
  • MYISAM支持全文搜索
  • 如果表格更加静态,并且选择更多,更新和删除更少,则可以使用MyISAM。
  • INNODB:

  • InnoDB支持行级锁定
  • InnoDB专为处理大量数据时的最高性能而设计
  • InnoDB支持外键,因此我们称InnoDB为MySQL是RDBMS
  • InnoDB将其表和索引存储在一个表空间中
  • InnoDB支持事务。 您可以使用InnoDB进行提交和回滚
  • 链接地址: http://www.djcxy.com/p/52231.html

    上一篇: What's the difference between MyISAM and InnoDB?

    下一篇: MySql: MyISAM vs. Inno DB!