在MySQL 8.0中,分区支持实际上不是由MySQL Server提供的,而是由表存储引擎自己的或本机分区处理程序提供的。在MySQL 8.0中,只有InnoDB
存储引擎提供了一个本地分区处理程序。这意味着不能使用任何其他存储引擎创建分区表。
MySQL集群的NDB
存储引擎也提供本地分区支持,但MySQL 8.0目前不支持。
修改表…优化分区
不能正确地处理使用InnoDB
.使用修改表…重建分区
而且修改表…分析分区
,相反,对于这样的表。有关更多信息,请参见ALTER TABLE分区操作.
自定义分区和NDB存储引擎(NDB集群)。分区的关键
(包括线性关键
)是惟一支持的分区类型NDB
存储引擎。通常情况下,在NDB集群中不可能使用除[之外的任何分区类型创建NDB集群表。线性
]关键
,尝试这样做会失败并出现错误。
异常(不适用于生产):可以通过设置新
NDB集群SQL节点上的系统变量在
.如果您选择这样做,您应该知道表使用的分区类型不是(线性)的关键
在生产环境中不支持。在这种情况下,可以创建和使用分区类型不同的表关键
或线性关键
但你这样做的风险完全由你自己承担.
可为对象定义的最大分区数NDB
表根据集群中数据节点和节点组的数量、使用的NDB集群软件版本以及其他因素而定。看到NDB和自定义分区,以查询更多资料。
分区中每个分区可存储的固定大小的最大数据量NDB
表为128tb。此前,这是16gb。
创建表
而且ALTER TABLE
会导致用户分区的语句NDB
表不满足以下两个要求中的任何一个或两个都是不允许的,失败后会出现错误:
表必须有显式的主键。
表的分区表达式中列出的所有列都必须是主键的一部分。
例外。如果是用户分区NDB
表是使用空列列表(即使用按键分区()
或按线性键划分()
),则不需要显式主键。
升级分区表。执行升级时,用关键
必须被转储并重新装载。使用非存储引擎的分区表InnoDB
不能从MySQL 5.7或更高版本升级到MySQL 8.0或更高版本;您必须从这些表中删除分区修改表…删除分区
或者将它们转化为InnoDB
使用修改表…引擎= INNODB
升级前。
有关转换的信息MyISAM
表InnoDB
,请参阅将表从MyISAM转换到InnoDB.