21.1.7.6 NDB 群集中不支持或缺少的功能

NDBtable 不支持其他存储引擎支持的许多功能。尝试在 NDB 群集中使用这些功能中的任何功能都不会导致错误本身。但是,在期望支持或强制执行功能的应用程序中可能会发生错误。即使被NDB有效地忽略,引用此类功能的语句也必须在语法上有效。

  • 索引前缀. NDBtable 不支持索引前缀。如果在诸如CREATE TABLEALTER TABLECREATE INDEX之类的语句中将前缀用作索引规范的一部分,则NDB不会创建该前缀。

包含索引前缀以及创建或修改NDBtable 的语句在语法上仍然必须有效。例如,以下语句始终失败,并显示错误 1089 不正确的前缀键;使用的密钥部分不是字符串,使用的长度比密钥部分长,或者存储引擎不支持唯一的前缀密钥,而与存储引擎无关:

CREATE TABLE t1 (
    c1 INT NOT NULL,
    c2 VARCHAR(100),
    INDEX i1 (c2(500))
);

这是由于 SQL 语法规则发生的,即没有索引的前缀可以大于其自身。

使用全局事务标识符(GTID)的复制与 NDB Cluster 不兼容,并且在 NDB Cluster 7.5 或 NDB CLuster 7.6 中不受支持。使用NDB存储引擎时,请勿启用 GTID,因为这很可能导致 NDB 群集复制(甚至包括 NDB 群集复制)失败。

NDB 群集中不支持半同步复制。

  • 生成的列. NDB存储引擎不支持虚拟生成的列上的索引。

与其他存储引擎一样,您可以在存储的生成的列上创建索引,但是请记住NDB使用DataMemory来存储生成的列,并使用IndexMemory来存储索引。有关示例,请参见NDB 群集中的 JSON 列和间接索引

NDB 群集将存储的生成列中的更 Rewrite 入二进制日志,但不记录对虚拟列所做的更改。这不应影响 NDB 群集复制或NDB与其他 MySQL 存储引擎之间的复制。

Note

有关NDB中事务处理限制的更多信息,请参见第 21.1.7.3 节“与 NDB 群集中的事务处理有关的限制”