本文介绍了分区变更的相关语法。
PolarDB-X的AUTO模式数据库分区表配套了非常完善的分区变更及管理能力,具体的分区管理能力包括以下几种:
分区变更操作对不同分区策略的支持
PolarDB-X的AUTO模式数据库分区表支持兼容MySQL分区表语法的多种分区策略:
Hash
Key
Range
Range Columns
List
List Columns
另外,还提供了PolarDB-X特有分区策略CoHash。
由于上述的不同分区策略对其分区定义及管理方式有所不同。因此,不同分区策略所支持的分区变更操作类型也不相同,以下是各种分区策略所支持执行的分区变更操作类型。
不同分区策略下支持的分区变更操作类型 | ||||||||
操作语义 | Hash | Key | Range | Range Columns | List | List Columns | CoHash | |
分裂分区 | 将一个分区分裂为多个 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
分裂热点 | 基于热点值进行分裂操作 | 不支持 | 支持 | 不支持 | 不支持 | 不支持 | 不支持 | 不支持 |
合并分区 | 将多个分区合并为一个 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
迁移分区 | 将一个分区实现DN节点间的迁移 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
重命名分区 | 修改一个分区名字 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
增加分区 | 增加一个分区 | 不支持 | 不支持 | 支持 | 支持 | 支持 | 支持 | 不支持 |
删除分区 | 删除一个分区 | 不支持 | 不支持 | 支持 | 支持 | 支持 | 支持 | 不支持 |
修改分区 | 修改List分区的Values集合 | 不支持 | 不支持 | 不支持 | 不支持 | 支持 | 支持 | 不支持 |
重组分区 | 对连续的多个分区进行重新定义 | 不支持 | 不支持 | 支持 | 支持 | 支持 | 支持 | 不支持 |
清空分区 | 清空一个分区数据 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 | 支持 |
分区变更操作对不同变更对象的支持
AUTO模式数据库分区表允许将分区定义完全相同的分区表集合划为一个表组,这样同一个表组的分区表的各个分区及分布,会始终保持对齐(比如,表组内的分区表始终同时分裂、同时合并等),表组级的分区变更这样可以使分区更变在执行过程中,不影响原有多个分区表之间的JOIN计算下推。
PolarDB-X对于上述的每一种分区策略下的每一种分区变更的类型,均支持变更不同层级(表级与表组级)、变更不同对象(主表、索引表):
表级:变更单个分区表的分区,又可细分为主表与索引表
变更主表分区:变更一个主表的分区
变更全局索引表分区:变更一个主表的全局索引表的分区
表组级:变更整个表组所有逻辑表的分区
以下是分区分裂为例,展示对不同变更层级、不同变更对象进行操作的语法示例:
分区变更的对象(以分区分裂为示例) | ||||
表级变更 TABLE | 表组级变更 TABLEGROUP | |||
变更主表分区 | 变更全局索引的分区 | 基于表组名 变更表组分区 | 基于表名 变更表组分区 (自动根据表名查找对应的表组并变更它的分区) | |
变更 一级分区 | ALTER TABLE [db_name.]tbl_name SPLIT PARTITION part_name ... | ALTER INDEX index_name ON TABLE [db_name.]tbl_name SPLIT PARTITION part_name ... | ALTER TABLEGROUP tg_Name SPLIT PARTITION part_name ... | ALTER TABLEGROUP BY TABLE [db_name.]tbl_name SPLIT PARTITION part_name ... |
变更 二级分区 | ALTER TABLE [db_name.]tbl_name SPLIT SUBPARTITION subpart_name ... | ALTER INDEX index_name ON TABLE [db_name.]tbl_name SPLIT SUBPARTITION subpart_name ... | ALTER TABLEGROUP tg_name SPLIT SUBPARTITION subpart_name ... | ALTER TABLEGROUP BY TABLE [db_name.]tbl_name SPLIT SUBPARTITION subpart_name ... |
不同分区变更操作的具体语法示例,请参考该分区变更语法目录下的各种分区变更说明。