25.2.7.2 NDB 集群与标准 MySQL 限制的限制和差异
在本节中,我们列举了 NDB 集群中的限制,这些限制不同于或不在标准 MySQL 中。
内存使用和恢复。 在将数据插入到NDB
表时,消耗的内存不会自动恢复删除的内容,如其他存储引擎那样。相反,以下规则成立:
-
对
DELETE
语句的执行将使得删除行所占用的内存可供插入同一表的行重新使用。但是,这些内存可以通过执行OPTIMIZE TABLE
语句来使其可供一般重新使用。集群的滚动重启也可以释放删除行所占用的内存。请参阅第25.6.5节,“NDB 集群的滚动重启”。
-
对
DROP TABLE
或TRUNCATE TABLE
操作的NDB
表释放用于该表的内存,供任何NDB
表使用,无论是同一张表还是另一张NDB
表。Note请注意
TRUNCATE TABLE
将删除并重新创建表。见第15.1.37节,“TRUNCATE TABLE Statement”。 -
集群配置中施加的限制. 存在许多硬限制,这些限制可以配置,但可用主内存中的限制也存在。见第25.4.3节,“NDB Cluster Configuration Files”中完整的配置参数列表。大多数配置参数可以在线升级。这些硬限制包括:
-
数据库内存大小和索引内存大小(
DataMemory
和IndexMemory
,分别)。DataMemory
分配为 32KB 页。每使用一个DataMemory
页,它将被分配到特定的表中;一旦分配,这些内存不能被释放,除非删除该表。请参阅第 25.4.3.6 节,“定义 NDB 集群数据节点”,了解更多信息。
-
使用配置参数
MaxNoOfConcurrentOperations
和MaxNoOfLocalOperations
设置事务中可以执行的最大操作数。Note批量加载、
TRUNCATE TABLE
和ALTER TABLE
将作为特殊情况处理,运行多个事务,因此不受这个限制的约束。 -
与表和索引相关的不同限制。例如,集群中的最大有序索引数由
MaxNoOfOrderedIndexes
决定,而每个表的最大有序索引数为 16。
-
-
节点和数据对象的最大值. 以下限制适用于集群节点和元数据对象的数量:
-
数据节点的最大数量为144。 (在NDB 7.6和之前,这个限制是48。)
数据节点必须具有node ID范围从1到144,包括所有。
管理节点和API节点可以使用node ID范围从1到255,包括所有。
-
NDB集群中的总最大节点数量为255。这包括所有SQL节点(MySQL服务器)、API节点(访问集群的应用程序除 MySQL 服务器外)、数据节点和管理服务器。
-
当前 NDB 集群版本中 metadata 对象的最大数量是20320。这是一个硬编码的限制。
请查看第25.2.7.11节,“NDB集群8.4中解决的前置问题”,了解更多信息。
-