MySQL 服务器在存储引擎方面提供了许多选择。由于 NDB
和 InnoDB
都可以作为 MySQL 的事务性存储引擎,因此 MySQL 服务器的用户有时会对 NDB Cluster 感兴趣。他们将 NDB
视为对 MySQL 中默认 InnoDB
存储引擎的一种可能的替代方案或升级。虽然 NDB
和 InnoDB
共享共同的特征,但它们在架构和实现方面存在差异,因此某些现有的 MySQL 服务器应用程序和使用场景可能非常适合 NDB Cluster,但并非所有场景都适合。
在本节中,我们将讨论和比较 NDB 9.0 使用的 NDB
存储引擎与 MySQL 9.0 中使用的 InnoDB
的一些特征。接下来的几节提供了技术比较。在许多情况下,关于何时何地使用 NDB Cluster 的决定必须在逐案基础上做出,并考虑所有因素。虽然本手册没有提供所有可能的应用场景的详细信息,但我们也尝试对某些常见类型的应用程序的相对适用性提供一些非常一般的指导,例如 NDB
与 InnoDB
后端相比的适用性。
NDB Cluster 9.0 使用基于 MySQL 9.0 的 mysqld,包括对 InnoDB
1.1 的支持。虽然可以使用 InnoDB
表与 NDB Cluster,但此类表并非集群化的。此外,也不可能将 NDB Cluster 9.0 发行版中的程序或库与 MySQL Server 9.0 一起使用,反之亦然。
虽然某些类型的常见业务应用程序可以在 NDB Cluster 或 MySQL 服务器上运行(最有可能使用 InnoDB
存储引擎),但存在一些重要的架构和实现差异。 第 25.2.6.1 节“NDB 和 InnoDB 存储引擎之间的差异” 总结了这些差异。由于存在差异,某些使用场景明显更适合其中一种引擎;参见 第 25.2.6.2 节“NDB 和 InnoDB 工作负载”。这反过来又会影响更适合与 NDB
或 InnoDB
一起使用的应用程序类型。参见 第 25.2.6.3 节“NDB 和 InnoDB 功能使用摘要”,比较它们在常见类型数据库应用程序中的相对适用性。
有关 NDB
和 MEMORY 存储引擎 的相对特征的信息,请参见 何时使用 MEMORY 或 NDB Cluster。
参见 第 18 章 替代存储引擎,以获取有关 MySQL 存储引擎的更多信息。