2011-07-10 56 views
2

我有一个架构,使用InnoDB表类型和外键。 我打算使用mysql集群,我只是想确保我可以使用“InnoDB”表类型,并且外键约束仍然有效。外键和集群

更新:

作为每文档:

是可能的MySQL服务器上创建使用 其它存储引擎(如MyISAM 或InnoDB的)表正在使用 与一个MySQL簇,但这些 非NDB表不参与 聚类;每个这样的表格是 ,严格限制在个人的MySQL 服务器实例上,它创建的是 。

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

+0

什么是你的问题吗?据我所知InnoDB中没有外键。 –

+3

其实在InnoDB中有外键:) –

+0

InnoDB **具有**完整的参照完整性。这是MyISAM,它是低效的。 – Dirk

回答

6

不,他们全都使用NDBCLUSTER作为存储引擎,而foreign key constraints are not available之前是5.6/MySQL Cluster NDB 7.3。从MySQL Cluster NDB 7.3 foreign keys are possible开始。

不参与集群的表可以是InnoDB(或任何其他的),但仅对服务器是本地的(即其他服务器不知道该表),所以只能查询其中的一个表节点(这种类型击败了聚类的优点)。当然,InnoDB表可以有外键约束,但InnoDB的InnoDB应用相同的规则> InnoDB <> MyISAM:MySQL不会抱怨,如果你在InnoDB表定义中提到位于NDB/MyISAM表中的列,但不会强制完整性。

+0

谢谢。更新我的问题。 – shantanuo

+0

更新了我的答案。 – Wrikken

+1

从[MySQL 5.6](http://dev.mysql.com/doc/refman/5.6/en/mysql-cluster-limitations-unsupported.html)开始支持外键约束。 – EJP

0

MySQL集群不支持外键,因为强加外键约束可能会降低集群的性能。您可以设计数据库,使数据库上的操作可以保持所需的检查。