MySQL的限制和限制/分区的限制和限制/与存储引擎相关的分区限制

10.2存储引擎分区限制

在MySQL 8.0中,分区支持实际上不是由MySQL Server提供的,而是由表存储引擎自己的或本机分区处理程序提供的。在MySQL 8.0中,只有InnoDB存储引擎提供了一个本地分区处理程序。这意味着不能使用任何其他存储引擎创建分区表。

请注意

MySQL集群的NDB存储引擎也提供本地分区支持,但MySQL 8.0目前不支持。

ALTER TABLE……优化分区不能正确地处理使用InnoDB.使用ALTER TABLE……重建分区而且ALTER TABLE……分析分区,相反,对于这样的表。有关更多信息,请参见ALTER TABLE分区操作

自定义分区和NDB存储引擎(NDB集群)。分区的关键(包括线性关键)是惟一支持的分区类型NDB存储引擎。通常情况下,在NDB集群中不可能使用除[之外的任何分区类型创建NDB集群表。线性关键,尝试这样做会失败并出现错误。

异常(不适用于生产):可以通过设置NDB集群SQL节点上的系统变量.如果您选择这样做,您应该知道表使用的分区类型不是(线性)的关键在生产环境中不支持。在这种情况下,可以创建和使用分区类型不同的表关键线性关键但你这样做的风险完全由你自己承担

可为对象定义的最大分区数NDB表根据集群中数据节点和节点组的数量、使用的NDB集群软件版本以及其他因素而定。看到NDB和自定义分区,以查询更多资料。

分区中每个分区可存储的固定大小的最大数据量NDB表为128tb。此前,这是16gb。

创建表而且ALTER TABLE会导致用户分区的语句NDB表不满足以下两个要求中的任何一个或两个都是不允许的,失败后会出现错误:

  1. 表必须有显式的主键。

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

例外。如果一个user-partitionedNDB表是使用空列列表(即使用分区键()按线性键划分()),则不需要显式主键。

升级分区表。执行升级时,用关键必须被转储并重新装载。使用非存储引擎的分区表InnoDB不能从MySQL 5.7或更高版本升级到MySQL 8.0或更高版本;您必须从这些表中删除分区ALTER TABLE……删除分区或者将它们转化为InnoDB使用ALTER TABLE……引擎= INNODB升级前。

有关转换的信息MyISAMInnoDB,请参阅将表从MyISAM转换到InnoDB