InnoDB和其他存储引擎之间的区别

时间:2017-02-07 05:28:34

标签: database innodb

当我谷歌时,我发现当InnoDB用作存储引擎时,它会锁定表中的特定行,而MYISM(索引顺序访问方法)会锁定整个表。   那么这对现实世界的例子意味着什么。

1 个答案:

答案 0 :(得分:3)

InnoDB和MyISAM之间的主要区别(“关于设计表或数据库”,你提到的)是对“参照完整性”和“交易”的支持。

如果您需要数据库来强制执行外键约束,或者您需要数据库来支持事务(即,作为单个工作单元处理的两个或更多DML操作所做的更改,应用了所有更改,或者所有更改然后你会选择InnoDB引擎,因为MyISAM引擎中没有这些功能。

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

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

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

对差异进行更详细的讨论是不切实际的(在本论坛中),没有对问题空间进行更详细的讨论......应用程序将如何使用数据库,表格数量,表格大小,交易负载,大量的选择,插入,更新,并发要求,复制功能等。

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

以下是您可以更轻松阅读的要点。

MYISAM:

  • MYISAM支持表级锁定

  • MyISAM专为速度需求而设计

  • MyISAM不支持外键,因此我们用MYISAM调用MySQL 是DBMS

  • MyISAM使用表将其表,数据和索引存储在磁盘空间中 分开三个不同的文件。 (tablename.FRM,tablename.MYD, tablename.MYI)

  • MYISAM不支持交易。你不能提交和 用MYISAM回滚。一旦发出命令就完成了。

  • MYISAM全文搜索。

  • 您可以使用MyISAM,如果该表更具静态性,有大量选择且更少更新和删除。

INNODB:

  • InnoDB支持行级锁定

  • InnoDB旨在提供处理大量数据时的最佳性能

  • InnoDB supportforeign keys因此我们用

  • 调用MySQL
  • InnoDB是RDBMS InnoDB商店 它在表空间中的表和索引

  • InnoDB支持交易。 您可以使用InnoDB提交和回滚