在本节中,我们列出了 NDB 集群中的限制,这些限制要么不同于标准 MySQL 的限制,要么在标准 MySQL 中不存在。
内存使用和恢复. 当数据插入到 NDB
表时,消耗的内存不会像其他存储引擎那样在删除时自动恢复。相反,以下规则适用:
-
在
NDB
表上执行DELETE
语句时,之前使用的内存将被释放,以便在同一个表上执行插入操作时重用。然而,这些内存可以通过执行OPTIMIZE TABLE
语句来释放以供一般使用。集群的滚动重启也可以释放已删除行所使用的内存。请参阅 第 25.6.5 节,“执行 NDB 集群的滚动重启”。
-
在
NDB
表上执行DROP TABLE
或TRUNCATE TABLE
操作时,使用的内存将被释放,以便供任何NDB
表重用,包括同一个表或另一个NDB
表。Note请注意,
TRUNCATE TABLE
语句会删除并重新创建表。请参阅 第 15.1.37 节,“TRUNCATE TABLE 语句”。 -
集群配置所施加的限制. 一些硬限制存在,这些限制可以配置,但集群中的可用主内存设置了限制。请参阅 第 25.4.3 节,“NDB 集群配置文件”。大多数配置参数可以在线升级。这些硬限制包括:
-
数据库内存大小和索引内存大小 (
DataMemory
和IndexMemory
,分别)。DataMemory
以 32KB 页分配。每个DataMemory
页被使用时,将被分配给特定的表;一旦分配,内存不能被释放,除非删除表。请参阅 第 25.4.3.6 节,“定义 NDB 集群数据节点”,以获取更多信息。
-
每个事务可以执行的最大操作数由配置参数
MaxNoOfConcurrentOperations
和MaxNoOfLocalOperations
确定。Note批量加载、
TRUNCATE TABLE
和ALTER TABLE
被视为特殊情况,通过运行多个事务来处理,因此不受这个限制。 -
不同的表和索引限制。例如,集群中的有序索引的最大数量由
MaxNoOfOrderedIndexes
确定,每个表的有序索引的最大数量为 16。
-
-
节点和数据对象的最大值. 集群节点和元数据对象的限制包括:
-
集群中的数据节点的最大数量为 144。(在 NDB 7.6 及更早版本中,这个限制为 48。)
数据节点必须具有介于 1 到 144 之间的节点 ID(包括)。
管理节点和 API 节点可以使用 1 到 255 之间的节点 ID(包括这两个值)。
-
NDB 集群中的总节点数最大为 255。这包括所有 SQL 节点(MySQL 服务器)、API 节点(除了 MySQL 服务器外的集群访问应用程序)、数据节点和管理服务器。
-
当前版本的 NDB 集群中的元数据对象最大数量为 20320。这是一个硬编码的限制。
请参阅 第 25.2.7.11 节,“NDB 集群 8.0 中解决的先前问题”,以获取更多信息。
-