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