MySQL 8.0版本说明
MySQL 8.0源代码文档10bet官方网站
按散列或键分区的表在分区设置的更改方面非常相似,两者在许多方面都不同于按范围或列表分区的表。因此,本节讨论如何修改按散列或键分区的表。有关添加和删除按范围或列表分区的表的分区的讨论,请参见第24.3.1节“RANGE和LIST分区的管理”.
不能从由分区的表中删除分区哈希
或关键
就像你可以从被分割的表范围
或列表
.但是,您可以合并哈希
或关键
分区使用修改表…合并分区
.假设a客户
包含客户端数据的表被划分为12个分区,创建如下所示:
CREATE TABLE clients (id INT, fname VARCHAR(30), lname VARCHAR(30), signed DATE) PARTITION BY HASH(MONTH(signed))
要将分区数量从12个减少到8个,请执行以下操作ALTER TABLE
声明:
mysql>:查询OK, 0行受影响(0.02秒)
合并
同样适用于由。划分的表哈希
,关键
,线性散列
,或线性关键
.下面是一个与上一个示例类似的示例,不同的是该表是由线性关键
:
mysql> CREATE TABLE clients_lk (-> id INT, -> fname VARCHAR(30), -> lname VARCHAR(30), -> signed DATE ->) -> PARTITION BY LINEAR KEY(signed) -> PARTITIONS 12;查询OK, 0 rows affected (0.03 sec) mysql> ALTER TABLE clients_lk COALESCE PARTITION 4;查询OK, 0 rows affected (0.06 sec) Records: 0 duplicate: 0 warning: 0
下面的数字合并分区
是要合并到剩余分区中的分区数—换句话说,是要从表中删除的分区数。
试图删除比表中更多的分区会导致如下错误:
mysql>:错误1478 (HY000):不能删除所有分区,请使用DROP TABLE代替
来增加分区的数量客户
表从12到18,使用修改表…添加分区
如下所示:
修改表的分区