InnoDB 与其他存储引擎的区别

Difference between InnoDB and Other storage Engine

当我 google 我发现当 InnoDB 被用作存储引擎时它锁定了 table 中的特定行并且 MYISM(索引顺序访问方法)锁定了整个 table . 那么这对现实世界的例子意味着什么。

InnoDB 和 MyISAM("with respect to designing a table or database" 你问过)的主要区别是支持 "referential integrity" 和 "transactions"。

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

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

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

因此,在选择InnoDB 和MyISAM 时,第一步是确定您是否需要InnoDB 提供的功能。如果没有,则考虑使用 MyISAM。

如果没有对问题进行更详细的讨论,对差异进行更详细的讨论是不切实际的(在本论坛中)space...应用程序将如何使用数据库,有多少 table s、tables 的大小、事务负载、select 的容量、插入、更新、并发要求、复制功能等

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

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

MYISAM:

  • MYISAM支持Table-level加锁

  • MyISAM 专为速度需求而设计

  • MyISAM 不支持外键因此我们用 MYISAM 调用 MySQL 是数据库管理系统

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

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

  • MYISAM 全文搜索。

  • 你可以使用 MyISAM,如果 table 更静态,有很多 select 和更少的更新和删除。

创新数据库:

  • InnoDB 支持Row-level锁定

  • InnoDB 专为处理大量数据时的最佳性能而设计

  • InnoDB 支持外键因此我们用

  • 调用 MySQL
  • InnoDB 是 RDBMS InnoDB 存储 它的 table 和 tablespace

  • 中的索引
  • InnoDB 支持事务。 您可以使用 InnoDB

  • 提交和回滚