MySQL Server 在存储引擎方面提供了多种选择。由于NDB
和
InnoDB
都可以作为事务性 MySQL 存储引擎,MySQL Server 的用户有时会对 NDB Cluster 感兴趣。他们
将MySQL 8.0 中的默认存储引擎NDB
视为可能的替代或升级。InnoDB
虽然NDB
和
InnoDB
NDB Cluster 具有共同的特点,但在架构和实现上存在差异,因此一些现有的 MySQL Server 应用程序和使用场景可以很好地适合 NDB Cluster,但不是所有的。
在本节中,我们将讨论和比较NDB
NDB 8.0 使用的存储引擎与InnoDB
MySQL 8.0 使用的存储引擎的一些特性。接下来的几节提供了技术比较。在许多情况下,必须根据具体情况决定何时何地使用 NDB Cluster,并考虑所有因素。虽然为每个可能的使用场景提供细节超出了本文档的范围,但我们也尝试提供一些非常通用的指导,说明一些常见类型的应用程序
NDB
相对于
InnoDB
后端的相对适用性。
NDB Cluster 8.0 使用基于 MySQL 8.0的mysqldInnoDB
,包括对
1.1 的支持。虽然可以将InnoDB
表与 NDB Cluster 一起使用,但此类表不是集群的。也不可能将来自 NDB Cluster 8.0 发行版的程序或库与 MySQL Server 8.0 一起使用,反之亦然。
虽然某些类型的常见业务应用程序确实可以在 NDB Cluster 或 MySQL 服务器上运行(很可能使用InnoDB
存储引擎),但存在一些重要的架构和实现差异。第 23.2.6.1 节,“NDB 和 InnoDB 存储引擎之间的差异”提供了这些差异的摘要。由于差异,一些使用场景显然更适合一种引擎或另一种引擎;参见
第 23.2.6.2 节,“NDB 和 InnoDB 工作负载”。这反过来又会影响更适合与NDB
或
一起使用的应用程序类型InnoDB
。请参阅
第 23.2.6.3 节,“NDB 和 InnoDB 功能使用摘要”,用于比较每种类型在常见数据库应用程序中的相对适用性。
有关
存储引擎NDB
和
MEMORY
存储引擎的相关特性的信息,请参阅
何时使用 MEMORY 或 NDB Cluster。
有关 MySQL 存储引擎的更多信息, 请参阅第 16 章,替代存储引擎。