Mysql 外键和群集

Mysql 外键和群集,mysql,cluster-computing,Mysql,Cluster Computing,我有一个使用InnoDB表类型和外键的模式。 我计划使用mysql集群,我只想确保我可以使用“InnoDB”表类型,并且外键约束仍然有效 更新: 根据文件: 可以使用创建表 其他存储引擎(如MyISAM) 或InnoDB),在正在运行的MySQL服务器上 与MySQL集群一起使用,但是 非NDB表不参与 聚类;每一张这样的桌子都是 对单个MySQL严格本地 它所在的服务器实例 创造 这是否意味着如果我创建一个InnoDB表,我可以有外键约束?我知道这些表不会参与集群。不,它们都用作存储引擎,并且

我有一个使用InnoDB表类型和外键的模式。 我计划使用mysql集群,我只想确保我可以使用“InnoDB”表类型,并且外键约束仍然有效

更新:

根据文件:

可以使用创建表 其他存储引擎(如MyISAM) 或InnoDB),在正在运行的MySQL服务器上 与MySQL集群一起使用,但是 非NDB表不参与 聚类;每一张这样的桌子都是 对单个MySQL严格本地 它所在的服务器实例 创造

这是否意味着如果我创建一个InnoDB表,我可以有外键约束?我知道这些表不会参与集群。

不,它们都用作存储引擎,并且在5.6/MySQL集群NDB 7.3之前。从…开始

不参与集群的表可以是InnoDB(或任何其他),但只能是服务器的本地表(即,其他服务器不知道该表),因此只能在其中一个节点上查询该表(这会破坏集群的优势)


当然,引擎的所有功能都是可用的,因此InnoDB表确实可以有外键约束,但InnoDBNDB和InnoDBmySAM适用相同的规则:如果在InnoDB表定义中提到位于NDB/MyISAM表中的列,MySQL不会抱怨,但也不会强制执行完整性。

MySQL群集不支持外键,因为强制执行外键约束可能会降低群集的性能。您可以将数据库设计为这样一种方式,即对数据库的操作将保留所需的检查。

可以通过编程方式强制NDB中的外键(或任何本机不支持它们的mysql存储引擎):

或者,如果您可以等待MySQL Cluster 7.3:

您的问题是什么?据我所知,InnoDB中没有外键。实际上InnoDB中有外键:)InnoDB具有完全的引用完整性。这是MyISAM,它是有效率的。外键约束似乎从开始就得到了支持。@EJP:您的确是对的,它更加明确。@EJP:相应地更新了答案,感谢您指出这一点;)