外键和集群

时间:2011-07-10 11:05:59

标签: mysql cluster-computing

我有一个使用InnoDB表类型和外键的模式。 我打算使用mysql Cluster,我只是想确保我可以使用“InnoDB”表类型,外键约束仍然有效。

更新

根据文件:

  

可以使用创建表   其他存储引擎(如MyISAM   或MySQLo服务器上的InnoDB)   与MySQL Cluster一起使用,但这些   非NDB表不参与   聚类;每个这样的表是   严格本地MySQL个人   它所在的服务器实例   创建

这是否意味着如果我创建一个InnoDB表,我可以有外键约束?我理解这些表不会参与聚类。

3 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:2)

可以在NDB(或任何本身不支持它们的mysql存储引擎)中以编程方式强制执行外键: http://dev.mysql.com/tech-resources/articles/mysql-enforcing-foreign-keys.html

或者,如果您可以等待MySQL Cluster 7.3: https://blogs.oracle.com/MySQL/entry/mysql_cluster_7_3_labs

答案 2 :(得分:0)

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