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
提交和回滚
当我 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
提交和回滚