基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
创建一级分区表表组
更新时间:2023-08-09 14:11:21
本节主要介绍如何在 OceanBase 数据库的 MySQL 模式中创建一级分区表表组。
注意事项
创建表组需要当前用户具有全局
CREATE权限。创建分区表表组前,需要指定表组的分区策略,表组的分区策略需要与待加入表组的分区表的分区策略一致。
创建分区表表组后,表组内的表不能单独进行分区管理操作,只能通过表组对分区表进行分区的统一管理。
创建表组
当前支持创建基于 Range Columns 分区、List Columns 分区、Hash 分区和 Key 分区的表组。仅具备租户管理员权限的用户才能创建表组。
创建一级分区表表组的 SQL 语句如下:
CREATE TABLEGROUP tablegroup_name
[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 PARTITIONS INTNUM
| HASH PARTITIONS INTNUM
| RANGE [COLUMNS column_num] {PARTITION partition_name VALUES LESS THAN range_partition_expr, ...}
| LIST [COLUMNS column_num] {PARTITION partition_name VALUES IN list_partition_expr, ...}
语句说明:
opt_tablegroup_option_list:定义表组的分区方式。要求表组的 Locality 和 Primary Zone 信息必须与表组内的表完全一致。表组的 Locality 包括副本类型、个数和位置,Primary Zone 包括 Leader 位置和优先级,以上信息均要与表组内表信息完全一致。opt_tg_partition_option:定义表组的分区规则。表组的分区规则需要与表组内的表使用相同的分区方式。对于 Range Columns、List Columns 和 Key 分区,创建表组时,必须指定列个数(
COLUMN_NUM)。分区方式主要表现在以下几点:
分区类型相同。例如,要求表组与表都是 Range Columns 分区。
如果是 Range Columns分区,则要求引用的列数相同和分区数相同,且 Range 分割点相同(各 value 的规则相同)。
示例
创建 Range Columns 分区的表组。
obclient> CREATE TABLEGROUP tblgroup1 PARTITION BY RANGE COLUMNS 1 ( PARTITION p0 VALUES LESS THAN(100), PARTITION p1 VALUES LESS THAN(200) ); Query OK, 0 rows affected创建 List Columns 分区的表组。
obclient> CREATE TABLEGROUP tblgroup1 PARTITION BY LIST COLUMNS 1 ( PARTITION p_northwest VALUES IN('OR', 'WA'), PARTITION p_southwest VALUES IN('AZ', 'UT', 'NM') ); Query OK, 0 rows affected创建 Hash 分区的表组。
obclient> CREATE TABLEGROUP tg1_h PARTITION BY HASH PARTITIONS 10; Query OK, 0 rows affected创建 Key 分区的表组。
obclient> CREATE TABLEGROUP tblgroup1 PARTITION BY KEY 1 PARTITIONS 10; Query OK, 0 rows affected