MySQL 8.0参考手册
MySQL 8.0发布说明
在分区设置中,按散列或按键进行分区的表是非常相似的,两者在许多方面都不同于按范围或列表进行分区的表。因此,本节将处理仅通过散列或键分区的表的修改。有关添加和删除按范围或列表分区的表的分区的讨论,请参见第4.1节,“RANGE和LIST分区的管理”.
不能从被分区的表中删除分区哈希
或关键
你可以用同样的方式从表中划分范围
或列表
.但是,您可以合并哈希
或关键
分区使用ALTER TABLE……合并分区
.假设一个客户
包含客户端数据的表被划分为12个分区,如下所示:
CREATE TABLE clients (id INT, fname VARCHAR(30), lname VARCHAR(30), signed DATE) PARTITION BY HASH(MONTH(signed)) PARTITIONS 12;
要将分区数量从12个减少到8个,执行以下命令ALTER TABLE
声明:
ALTER TABLE clients COALESCE PARTITION 4;查询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;mysql> ALTER TABLE clients_lk COALESCE PARTITION 4;查询OK, 0行影响(0.06秒)记录:0重复:0警告:0
以下数量合并分区
是要合并到剩余分区的数量——换句话说,是要从表中删除的分区数量。
试图删除比表中更多的分区会导致如下错误:
ALTER TABLE clients COALESCE PARTITION 18;ERROR 1478 (HY000): Cannot remove all partitions, use DROP TABLE代替
的分区数量客户
表12至18,使用ALTER TABLE……添加分区
如下所示:
ALTER TABLE PARTITION PARTITIONS 6;