以下限制适用于使用用户定义的表分区的存储引擎。
合并存储引擎。用户定义的分区和合并
存储引擎不兼容。表使用合并
存储引擎不支持分区。分区表不能合并。
FEDERATED存储引擎。分区的联邦
不支持Tables;不可能创建分区联邦
表。
CSV存储引擎。分区表使用CSV
不支持存储引擎;不可能创建分区CSV
表。
InnoDB存储引擎。InnoDB
外键和MySQL分区不兼容。分区InnoDB
表不能有外键引用,也不能有外键引用的列。InnoDB
具有外键或被外键引用的表不能分区。
InnoDB
子分区不支持使用多个磁盘。(目前只有MyISAM
.)
此外,修改表…优化分区
不能正确处理使用InnoDB
存储引擎。使用修改表…重建分区
而且修改表…分析分区
而不是这样的桌子。有关更多信息,请参见章节13.1.8.1,“ALTER TABLE分区操作”.
自定义分区和NDB存储引擎(NDB Cluster)。分区的关键
(包括线性关键
)是惟一支持的分区类型NDB
存储引擎。在正常情况下,在NDB集群中使用除[]以外的任何分区类型创建NDB集群表是不可能的。线性
]关键
,并且尝试这样做会失败并报错。
例外(不适用于生产):可以通过设置新
将NDB集群SQL节点上的system变量改为在
.如果您选择这样做,您应该知道表使用的分区类型不是(线性)的关键
在生产环境中不支持。在这种情况下,可以创建和使用分区类型不同的表关键
或线性关键
,但你这样做的风险完全由你自己承担.
对象可以定义的最大分区数NDB
该表取决于集群中数据节点和节点组的数量、使用的NDB集群软件版本以及其他因素。看到NDB和用户自定义分区,以获取更多资料。
从MySQL NDB集群7.5.2开始,一个数据库中每个分区可以存储的最大固定大小的数据量NDB
表为128tb。在此之前,这是16gb。
创建表
而且ALTER TABLE
会导致用户分区的语句NDB
表不满足以下两个要求中的一个或两个是不允许的,失败则报错:
表必须有显式的主键。
表分区表达式中列出的所有列都必须是主键的一部分。
例外。如果用户分区NDB
表使用空列列表(即使用按键()分区
或按线性键()进行分区
),则不需要显式的主键。
升级分区表。执行升级时,被分区的表关键
并且使用任何存储引擎NDB
必须转储和重新加载。
所有分区使用相同的存储引擎。分区表的所有分区必须使用相同的存储引擎,并且表整体使用的存储引擎必须相同。此外,如果没有在表级指定引擎,那么在创建或修改分区表时必须执行以下操作之一:
做不指定任意引擎任何分区或子分区
为指定引擎所有分区或子分区