基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
创建二级分区表组
更新时间:2023-08-07 17:31:04
本节主要介绍如何在 OceanBase 数据库的 MySQL 模式中创建二级分区表表组。
支持的二级分区类型
OceanBase 数据库的 MySQL 模式支持创建模板化和非模板化的二级分区表表组。
| 分区类型 | 创建模板化二级分区表组 | 创建非模板化二级分区表组 |
|---|---|---|
| Range Columns + Range Columns | 不支持 | 不支持 |
| Range Columns + List Columns | 支持 | 不支持 |
| Range Columns + Hash | 支持 | 不支持 |
| Range Columns + Key | 支持 | 不支持 |
| List Columns + Range Columns | 支持 | 不支持 |
| List Columns + List Columns | 不支持 | 不支持 |
| List Columns + Hash | 支持 | 不支持 |
| List Columns + Key | 支持 | 不支持 |
注意事项
创建表组后,表组内的表不能单独进行分区管理操作,只能通过表组对分区表进行分区的统一管理。
创建二级分区表组语法
创建模板化二级分区表表组的 SQL 语法
CREATE TABLEGROUP [IF NOT EXISTS] tablegroupname [opt_tablegroup_option_list] [opt_tg_partition_option]
opt_tablegroup_option_list:
tablegroup_option [tablegroup_option]
tablegroup_option:
LOCALITY [=] locality_name
| PRIMARY_ZONE [=] primary_zone_name
opt_tg_partition_option:
PARTITION BY
KEY column_num [tg_subpartition_option] PARTITIONS int_num
| HASH [tg_subpartition_option] PARTITIONS INTNUM
| RANGE COLUMNS column_num [tg_subpartition_option]
{PARTITION partition_name VALUES LESS THAN range_partition_expr, ...}
| LIST COLUMNS column_num [tg_subpartition_option]
{PARTITION partition_name VALUES IN list_partition_expr, ...}
tg_subpartition_option:
SUBPARTITION BY
RANGE COLUMNS column_num SUBPARTITION TEMPLATE
{SUBPARTITION partition_name VALUES LESS THAN range_partition_expr, ...}
| HASH SUBPARTITIONS INTNUM
| KEY column_num SUBPARTITIONS INTNUM
| LIST COLUMNS column_num SUBPARTITION TEMPLATE
{SUBPARTITION partition_name VALUES IN list_partition_expr, ...}
语句说明
opt_tablegroup_option_list:定义表组的分区方式。要求表组的 Locality 和 Primary Zone 信息必须与表组内的表完全一致。表组的 Locality 包括副本类型、个数和位置,Primary Zone 包括 Leader 位置和优先级,以上信息均要与表组内表信息完全一致。opt_tg_partition_option:定义表组的分区规则。表组的分区规则需要与表组内的表使用相同的分区类型和分区个数。由于表组没有具体的列定义,故不需要写出具体的列,只需要指定列个数(
column_num)即可。
示例
创建模板化二级分区表组
创建模板化 Range Columns + List Columns 分区表表组。
obclient> CREATE TABLEGROUP tg2_m_rclc PARTITION BY RANGE COLUMNS 1 SUBPARTITION BY LIST COLUMNS 1 SUBPARTITION TEMPLATE (SUBPARTITION mp0 VALUES IN('A','B'), SUBPARTITION mp1 VALUES IN('C','D'), SUBPARTITION mp2 VALUES IN('E','F') ) (PARTITION p0 VALUES LESS THAN(100), PARTITION p1 VALUES LESS THAN(200), PARTITION p2 VALUES LESS THAN(300) ); Query OK, 0 rows affected创建模板化 Range Columns + Hash 分区表表组。
obclient> CREATE TABLEGROUP tg2_m_rch PARTITION BY RANGE COLUMNS 1 SUBPARTITION BY HASH SUBPARTITIONS 5 (PARTITION p0 VALUES LESS THAN(100), PARTITION p1 VALUES LESS THAN(200), PARTITION p2 VALUES LESS THAN(300) ); Query OK, 0 rows affected创建模板化 Range Columns + Key 分区表表组。
obclient> CREATE TABLEGROUP tg2_m_rck PARTITION BY RANGE COLUMNS 1 SUBPARTITION BY KEY 1 SUBPARTITIONS 3 (PARTITION p0 VALUES LESS THAN(100), PARTITION p1 VALUES LESS THAN(200), PARTITION p2 VALUES LESS THAN(300) ); Query OK, 0 rows affected创建模板化 List Columns + Range Columns 分区表表组。
obclient> CREATE TABLEGROUP tg2_m_lcrc PARTITION BY LIST COLUMNS 1 SUBPARTITION BY RANGE COLUMNS 1 SUBPARTITION TEMPLATE (SUBPARTITION mp0 VALUES LESS THAN(100), SUBPARTITION mp1 VALUES LESS THAN(200), SUBPARTITION mp2 VALUES LESS THAN(300) ) (PARTITION p0 VALUES IN('A','B'), PARTITION p1 VALUES IN('C','D'), PARTITION p2 VALUES IN('E','F') ); Query OK, 0 rows affected创建模板化 List Columns + Hash 分区表表组。
obclient> CREATE TABLEGROUP tg2_m_lch PARTITION BY LIST COLUMNS 1 SUBPARTITION BY HASH SUBPARTITIONS 5 (PARTITION p0 VALUES IN('01','02'), PARTITION p1 VALUES IN('03','04'), PARTITION p2 VALUES IN('05','06') ); Query OK, 0 rows affected创建模板化 List Columns + Key 分区表表组。
obclient> CREATE TABLEGROUP tg2_m_lck PARTITION BY LIST COLUMNS 1 SUBPARTITION BY KEY 1 SUBPARTITIONS 5 (PARTITION p0 VALUES IN('01','02'), PARTITION p1 VALUES IN('03','04'), PARTITION p2 VALUES IN('05','06') ); Query OK, 0 rows affected