首批通过分布式安全可靠测评,为关键业务系统打造
管理二级分区表表组
更新时间:2023-08-09 14:11:21
创建表组后,您可以将二级分区表加入表组,并对表组进行分区管理操作。
分区操作支持概览
当前版本的 MySQL 模式下,非模板化二级分区表表组的分区管理操作支持情况如下表所示。
添加分区
| 分区类型 | 添加一级分区 | 添加二级分区 |
|---|---|---|
| Range + Range / Range + Range Columns / Range + List / Range + List Columns / Range + Hash / Range + Key | 支持 | 不支持 |
| Range Columns + Range /Range Columns + Range Columns / Range Columns + List / Range Columns + List Columns / Range Columns + Hash / Range Columns + Key | 支持 | 不支持 |
| List + Range / List + Range Columns / List + List / List + List Columns / List + Hash / List + Key | 支持 | 不支持 |
| List Columns + Range / List Columns + Range Columns / List Columns + List / List Columns + List Columns /List Columns + Hash / List Columns + Key | 支持 | 不支持 |
| Hash + Range / Hash + Range Columns / Hash + List / Hash + List Columns / Hash + Hash / Hash + Key | 不支持 | 不支持 |
| Key + Range / Key + Range Columns / Key + List / Key + List Columns / Key + Hash /Key + Key | 不支持 | 不支持 |
删除分区
| 分区类型 | 删除一级分区 | 删除二级分区 |
|---|---|---|
| Range + Range / Range + Range Columns / Range + List / Range + List Columns | 支持 | 支持 |
| Range + Hash / Range + Key | 支持 | 不支持 |
| Range Columns + Range / Range Columns + Range Columns / Range Columns + List / Range Columns + List Columns | 支持 | 支持 |
| Range Columns + Hash / Range Columns + Key | 支持 | 不支持 |
| List + Range / List + Range Columns / List + List / List + List Columns | 支持 | 支持 |
| List + Hash / List + Key | 支持 | 不支持 |
| List Columns + Range / List Columns + Range Columns / List Columns + List / List Columns + List Columns | 支持 | 支持 |
| List Columns + Hash / List Columns + Key | 支持 | 不支持 |
| Hash + Range / Hash + Range Columns / Hash + List / Hash + List Columns / Hash + Hash / Hash + Key | 不支持 | 不支持 |
| Key + Range / Key + Range Columns / Key + List / Key + List Columns / Key + Hash /Key + Key | 不支持 | 不支持 |
向表组中添加一级分区
二级分区表加入到表组后,您可以向表组中添加一级分区。操作前请确认当前用户拥有全局 ALTER 权限。
SQL 语法如下:
ALTER TABLEGROUP tablegroup_name ADD PARTITION partition_option;
partition_option:
{PARTITION partition_name VALUES LESS THAN range_partition_expr (tg_subpartition_option)
[,PARTITION partition_name VALUES LESS THAN range_partition_expr (tg_subpartition_option)]... }
|{PARTITION partition_name VALUES IN list_partition_expr (tg_subpartition_option)
[,PARTITION partition_name VALUES IN list_partition_expr (tg_subpartition_option)]...}
tg_subpartition_option:
{SUBPARTITION partition_name VALUES LESS THAN range_partition_expr, ...}
|{SUBPARTITION partition_name VALUES IN list_partition_expr, ....}
|{SUBPARTITION partition_name, ....}
示例:
向 Range Columns + Range Columns 分区表的表组中添加一级分区。
obclient> ALTER TABLEGROUP tg2_rr ADD PARTITION (PARTITION p2 VALUES LESS THAN(300) (SUBPARTITION sp8 VALUES LESS THAN (2020), SUBPARTITION sp9 VALUES LESS THAN (2021) ) ); Query OK, 0 rows affected向 Range Columns + List Columns 分区表的表组中添加一级分区。
obclient> ALTER TABLEGROUP tg2_rl ADD PARTITION (PARTITION p2 VALUES LESS THAN (300) (SUBPARTITION sp5 VALUES IN (('US',1),('US',2)), SUBPARTITION sp6 VALUES IN (('CN',1),('CN',2)) ) ); Query OK, 0 rows affected向 Range Columns + Hash 分区表的表组中添加一级分区。
obclient> ALTER TABLEGROUP tg2_rh ADD PARTITION (PARTITION p3 VALUES LESS THAN (2020) (SUBPARTITION s6, SUBPARTITION s7 ) ); Query OK, 0 rows affected向 Range Columns + Key 分区表的表组中添加一级分区。
obclient> ALTER TABLEGROUP tg2_rk ADD PARTITION (PARTITION p3 VALUES LESS THAN(400) (SUBPARTITION sp9, SUBPARTITION sp10, SUBPARTITION sp11 ) ); Query OK, 0 rows affected向 List Columns + Range Columns 分区表的表组中添加一级分区。
obclient> ALTER TABLEGROUP tg2_lr ADD PARTITION (PARTITION p2 VALUES IN('E','F') (SUBPARTITION sp8 VALUES LESS THAN(2020), SUBPARTITION sp9 VALUES LESS THAN(2021), SUBPARTITION sp10 VALUES LESS THAN(2022), SUBPARTITION sp11 VALUES LESS THAN(2023) ) ); Query OK, 0 rows affected向 List Columns + List Columns 分区表的表组中添加一级分区。
obclient> ALTER TABLEGROUP tg1_ll ADD PARTITION (PARTITION p2 VALUES IN('H','I') (SUBPARTITION sp8 VALUES IN('01','03'), SUBPARTITION sp9 VALUES IN('04','06'), SUBPARTITION sp10 VALUES IN('07','09') ) ); Query OK, 0 rows affected向 List Columns + Hash 分区表的表组中添加一级分区。
obclient> ALTER TABLEGROUP tg2_lh ADD PARTITION (PARTITION p2 VALUES IN('N','R') (SUBPARTITION sp4, SUBPARTITION sp5 ) ); Query OK, 0 rows affected向 List Columns + Key 分区表的表组中添加一级分区。
obclient> ALTER TABLEGROUP tg2_lk ADD PARTITION (PARTITION p2 VALUES IN('05','06') (SUBPARTITION sp6, SUBPARTITION sp7 ) ); Query OK, 0 rows affected
向表组中添加二级分区
当前 MySQL 模式暂不支持向表组中添加二级分区。
从表组中删除一级分区
二级分区表加入到表组后,您可以删除表组中的一级分区。操作前请确认当前用户拥有全局 ALTER 权限。
SQL 语法如下:
ALTER TABLEGROUP tablegroup_name DROP PARTITION partition_name[,partition_name]...;
其中,tablegroup_name 表示表组名称;partition_name 表示待删除的一级分区的分区名。
示例如下:
obclient> ALTER TABLEGROUP tblgroup1 DROP PARTITION p2;
Query OK, 0 rows affected
从表组中删除二级分区
二级分区表加入到表组后,您也可以删除表组中的二级分区。如果一次删除多个二级分区,则多个二级分区需要来自同一个一级分区。操作前请确认当前用户拥有全局 ALTER 权限。
SQL 语法如下:
ALTER TABLEGROUP tablegroup_name DROP SUBPARTITION subpartition_name[,partition_name]...;
其中:tablegroup_name 表示表组名称,subpartition_name 表示待删除的二级分区的分区名。
示例如下:
obclient>ALTER TABLEGROUP tg1 DROP SUBPARTITION sp2;