Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database InnoDB与其他存储引擎的区别_Database_Innodb - Fatal编程技术网

Database InnoDB与其他存储引擎的区别

Database InnoDB与其他存储引擎的区别,database,innodb,Database,Innodb,当我搜索它时,我发现当InnoDB用作存储引擎时,它会锁定表中的特定行,而MYISM(索引顺序访问方法)会锁定整个表。 那么,在现实世界的例子中,这意味着什么呢?InnoDB和MyISAM之间的主要区别(“在设计表或数据库方面”,您所问的)是对“引用完整性”和“事务”的支持 如果您需要数据库来实施外键约束,或者需要数据库来支持事务(即,两个或多个DML操作作为单个工作单元进行的更改,所有更改都已应用,或者所有更改都已还原),那么您可以选择InnoDB引擎,因为MyISAM引擎没有这些功能 这是两

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

InnoDB和MyISAM之间的主要区别(“在设计表或数据库方面”,您所问的)是对“引用完整性”和“事务”的支持

如果您需要数据库来实施外键约束,或者需要数据库来支持事务(即,两个或多个DML操作作为单个工作单元进行的更改,所有更改都已应用,或者所有更改都已还原),那么您可以选择InnoDB引擎,因为MyISAM引擎没有这些功能

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

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

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

如果没有对问题空间进行更详细的讨论,对差异进行更详细的讨论是相当不切实际的(在本论坛中)。。。应用程序将如何使用数据库、表的数量、表的大小、事务负载、select、insert、更新的数量、并发性要求、复制功能等

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

以下是要点,您可以更容易地阅读

MYISAM:

  • MYISAM支持表级锁定

  • MyISAM专为满足速度需求而设计

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

  • MyISAM使用 将三个不同的文件分开。(tablename.FRM,tablename.MYD, tablename.MYI)

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

  • MYISAM全文搜索

  • 如果表比较静态,有很多选择,更新和删除较少,那么可以使用MyISAM

INNODB:

  • InnoDB支持行级锁定

  • InnoDB设计用于在处理大量数据时实现最高性能

  • InnoDB支持外键,因此我们使用

  • InnoDB是RDBMS InnoDB存储 表空间中的表和索引

  • InnoDB支持事务处理。 您可以使用InnoDB提交和回滚


InnoDB和MyISAM之间的主要区别(“在设计表或数据库方面”您曾询问过)是对“引用完整性”和“事务”的支持

如果您需要数据库来实施外键约束,或者需要数据库来支持事务(即,两个或多个DML操作作为单个工作单元进行的更改,所有更改都已应用,或者所有更改都已还原),那么您可以选择InnoDB引擎,因为MyISAM引擎没有这些功能

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

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

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

如果没有对问题空间进行更详细的讨论,对差异进行更详细的讨论是相当不切实际的(在本论坛中)。。。应用程序将如何使用数据库、表的数量、表的大小、事务负载、select、insert、更新的数量、并发性要求、复制功能等

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

以下是要点,您可以更容易地阅读

MYISAM:

  • MYISAM支持表级锁定

  • MyISAM专为满足速度需求而设计

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

  • MyISAM使用 将三个不同的文件分开。(tablename.FRM,tablename.MYD, tablename.MYI)

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

  • MYISAM全文搜索

  • 如果表比较静态,有很多选择,更新和删除较少,那么可以使用MyISAM

INNODB:

  • InnoDB支持行级锁定

  • InnoDB设计用于在处理大量数据时实现最高性能

  • InnoDB支持外键,因此我们使用

  • InnoDB是RDBMS InnoDB