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