MySQL 5.7 存储引擎分区限制

存储引擎分区限制
以下限制适用于使用具有用户定义表分区的存储引擎。

MERGE存储引擎。用户定义分区与合并存储引擎不兼容。不能对使用MERGE存储引擎的表进行分区。不能合并分区表。

FEDERATED存储引擎。不支持FEDERATED表的分区;不可能创建分区的FEDERATED表。

CSV存储引擎。不支持使用CSV存储引擎的分区表;不可能创建分区的CSV表。

InnoDB存储引擎。InnoDB外键和MySQL分区不兼容。分区后的InnoDB表不能有外键引用,也不能有被外键引用的列。包含外键或被外键引用的 InnoDB表不能进行分区。

InnoDB不支持使用多个磁盘进行子分区。(目前只有MyISAM支持。)

另外,ALTER TABLE … OPTIMIZE PARTITION在使用InnoDB存储引擎的分区表上不能正确工作。使用ALTER TABLE … REBUILD PARTITION和 ALTER TABLE … ANALYZE PARTITION来代替。

自定义分区和NDB存储引擎(NDB集群)。按键分区(包括线性键)是NDB存储引擎唯一支持的分区类型。通常情况下,在NDB集群中不可能使用除 [LINEAR]键以外的任何分区类型来创建NDB集群表,并且尝试会失败并抛出错误。

例外情况(不用于生产环境):可以通过将NDB集群SQL节点上的新系统变量设置为on来覆盖此限制。如果您选择这样做,您应该知道生产环境不 支持使用[LINEAR] KEY以外的分区类型的表。在这种情况下,用户可以创建和使用非KEY或LINEAR KEY分区类型的表,但风险自负。

可以为一个NDB表定义的最大分区数取决于集群中的数据节点和节点组的数量、正在使用的NDB集群软件的版本以及其他因素。

从MySQL NDB Cluster 7.5.2开始,在一个NDB表中,每个分区最多可以存储的固定大小的数据量是128 TB。以前是16 GB。

不允许使用CREATE TABLE和ALTER TABLE语句导致用户分区的NDB表不满足以下两个要求之一或两个都不满足,并返回错误:
1.表必须有显式主键。

2.表的分区表达式中列出的所有列都必须是主键的一部分。

例外。如果用户分区的NDB表是使用空列列表创建的(即使用PARTITION BY KEY()或PARTITION BY LINEAR KEY()),那么不需要显式的主键。

升级分区表。在执行升级时,必须转储并重新加载使用非NDB存储引擎的KEY分区表。

所有分区使用相同的存储引擎。一个分区表的所有分区必须使用相同的存储引擎,而且整个表必须使用相同的存储引擎。此外,如果没有在表级 别上指定引擎,则在创建或修改已分区表时必须执行以下任意一种操作:
.不为任何分区或子分区指定任何引擎

.为所有分区或子分区指定引擎

发表评论

电子邮件地址不会被公开。