在本节中,我们列出了在 NDB 集群中发现的限制,这些限制要么与标准 MySQL 中发现的限制不同,要么在标准 MySQL 中不存在。
内存使用和恢复。 当数据插入到 NDB
表时消耗的内存不会在删除时自动恢复,就像其他存储引擎一样。相反,以下规则适用
对
DELETE
语句进行操作的NDB
表使以前被删除的行使用的内存可供在同一表上的插入操作重新使用。但是,可以通过执行OPTIMIZE TABLE
来使此内存可供一般性重新使用。集群的滚动重启也会释放被删除的行使用的任何内存。请参阅 第 25.6.5 节,“执行 NDB 集群的滚动重启”。
对
DROP TABLE
或TRUNCATE TABLE
操作进行操作的NDB
表会释放此表使用的内存,供任何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。)
数据节点必须具有 1 到 144(含)范围内的节点 ID。
管理节点和 API 节点可以使用 1 到 255(含)范围内的节点 ID。
NDB 集群中节点的总最大数量为 255。此数量包括所有 SQL 节点(MySQL 服务器)、API 节点(除了 MySQL 服务器之外访问集群的应用程序)、数据节点和管理服务器。
当前版本的 NDB 集群中元数据对象的总数最大为 20320。此限制是硬编码的。
请参阅 第 25.2.7.11 节,“NDB 集群 9.0 中已解决的先前 NDB 集群问题”,了解更多信息。