以下限制适用于使用具有用户定义的表分区的存储引擎。
MERGE存储引擎。 用户定义的分区和MERGE
存储引擎不兼容。使用MERGE
存储引擎的表 不能分区。分区表无法合并。
联合存储引擎。 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
不是这样的表。有关更多信息,请参见 第13.1.7.1节“ALTER TABLE分区操作”。
用户定义分区和NDB存储引擎(NDB Cluster)。 分区KEY
(包括 LINEAR KEY
)是NDB
存储引擎支持的唯一分区类型 。在正常情况下,MySQL NDB Cluster 7.4中不可能使用除[ LINEAR
] 之外的任何分区类型创建NDB Cluster表KEY
,并尝试执行此操作失败并显示错误。
异常(不用于生产):可以通过将new
NDB Cluster SQL节点上的系统变量设置为来覆盖此限制 ON
。如果您选择这样做,您应该知道使用分区类型的表[LINEAR] KEY
在生产中不受支持。在这种情况下,您可以创建和使用除了KEY
或之外的分区类型的表LINEAR KEY
,但是您完全可以自行承担风险。
可以为NDB
表定义的最大分区数 取决于群集中的数据节点和节点组数,正在使用的NDB群集软件的版本等因素。有关详细信息,请参阅 NDB和用户定义的分区。
NDB
表中 每个分区可以存储的最大固定大小数据量为16 GB。
CREATE TABLE
以及 ALTER TABLE
导致用户分区NDB
表不符合以下两个要求中的任一个或两者的语句 是不允许的,并且会失败并显示错误:
-
表必须有一个显式的主键。
-
表的分区表达式中列出的所有列必须是主键的一部分。
例外。 如果NDB
使用空列表(即使用PARTITION BY KEY()
或PARTITION BY LINEAR KEY()
)创建用户分区表 ,则不需要显式主键。
升级分区表。 执行升级时,由其划分 KEY
并使用任何存储引擎的表NDB
必须被转储和重新加载。
所有分区的存储引擎相同。 分区表的所有分区必须使用相同的存储引擎,并且它必须与表整体使用的存储引擎相同。另外,如果没有在表级别上指定引擎,则在创建或更改分区表时必须执行以下任一操作:
-
不要不指定任何引擎 的任何分区或子分区
-
指定所有分区或子分区 的引擎