本文介紹了分區變更的相關語法。
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 ... |
不同分區變更操作的具體語法示例,請參考該分區變更語法目錄下的各種分區變更說明。