表不支持其他存储引擎支持的许多功能NDB
。尝试在 NDB Cluster 中使用这些功能中的任何一个本身都不会导致错误;但是,在希望支持或强制执行这些功能的应用程序中可能会出现错误。引用此类功能的语句,即使被 有效地忽略
NDB
,也必须在句法上和其他方面有效。
索引前缀。 表不支持索引前缀
NDB
。如果前缀用作语句中索引规范的一部分,例如CREATE TABLE
,ALTER TABLE
或CREATE INDEX
,则前缀不是由NDB
.包含索引前缀并创建或修改
NDB
表的语句必须在语法上仍然有效。例如,下面的语句总是失败,错误 1089 Incorrect prefix key;使用的键部分不是字符串,使用的长度比键部分长,或者存储引擎不支持唯一前缀键,无论存储引擎如何:CREATE TABLE t1 ( c1 INT NOT NULL, c2 VARCHAR(100), INDEX i1 (c2(500)) );
发生这种情况是由于 SQL 语法规则,即任何索引都不能具有大于自身的前缀。
保存点和回滚。 保存点和保存点的回滚被忽略,如
MyISAM
.提交的持久性。 磁盘上没有持久提交。提交被复制,但不能保证日志在提交时刷新到磁盘。
复制。 不支持基于语句的复制。在设置集群复制时使用
--binlog-format=ROW
(or )。--binlog-format=MIXED
有关更多信息,请参阅 第 23.7 节,“NDB Cluster 复制”。使用全局事务标识符 (GTID) 的复制与 NDB Cluster 不兼容,并且在 NDB Cluster 8.0 中不受支持。使用存储引擎时不要启用 GTID
NDB
,因为这很可能导致问题,包括 NDB Cluster Replication 失败。NDB Cluster 不支持半同步复制。
生成的列。
NDB
存储引擎不支持虚拟生成列的索引 。与其他存储引擎一样,您可以在存储的生成列上创建索引,但您应该记住,
NDB
用于DataMemory
生成列的存储以及IndexMemory
索引。有关示例, 请参阅 NDB Cluster 中的 JSON 列和间接索引。NDB Cluster 将存储的生成列中的更改写入二进制日志,但不会记录对虚拟列所做的更改。这不应该影响 NDB Cluster 复制或
NDB
与其他 MySQL 存储引擎之间的复制。