基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
CREATE TABLEGROUP
更新时间:2023-08-03 17:20:32
描述
该语句用来创建表组。
表组主要用于创建一组具有相同分布特征的表,具有相同分布特征的表在进行连接操作时,可以在本地进行,避免跨节点的数据请求。
创建表组时,首先要规划好表组的用途。如果是用于普通表的属性,表组就不用分区;如果是用于分区表的属性,表组就要指定分区策略,并且要跟分区表的分区策略保持一致。
说明
只有租户下的管理员权限才可以创建表组。
向表组中添加表的前提是表的分区策略跟表组的分区策略保持一致。
此外,表组的 BINDING 属性需要为 FALSE,您可以通过以下语句查看表组的属性。
您可以通过修改表的表组属性将表添加到表组,也可以直接向表组中添加表。
修改表的表组属性:
obclient> ALTER TABLE $table tablegroup=$tbgroup; Query OK, 0 rows affected向表组中添加表:
obclient> ALTER TABLEGROUP $tbgroup ADD $table; Query OK, 0 rows affected
语法
创建模版化二级分区表组的语法如下:
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 INTNUM
| HASH [tg_subpartition_option] PARTITIONS INTNUM
| RANGE [tg_subpartition_option]
{PARTITION partition_name VALUES LESS THAN range_partition_expr, ...}
| RANGE COLUMNS COLUMN_NUM [tg_subpartition_option]
{PARTITION partition_name VALUES LESS THAN range_partition_expr, ...}
| LIST [tg_subpartition_option]
{PARTITION partition_name VALUES in list_partition_expr, ...}
| LIST COLUMNS COLUMN_NUM [tg_subpartition_option]
{PARTITION partition_name VALUES in list_partition_expr, ...}
tg_subpartition_option:
SUBPARTITION BY
RANGE SUBPARTITION TEMPLATE
{SUBPARTITION partition_name VALUES LESS THAN range_partition_expr, ...}
| RANGE COLUMNS COLUMN_NUM SUBPARTITION TEMPLATE
{SUBPARTITION partition_name VALUES LESS THAN range_partition_expr, ...}
| HASH [SUBPARTITIONS INTNUM]
| KEY COLUMN_NUM [SUBPARTITIONS INTNUM]
| LIST SUBPARTITION TEMPLATE
{SUBPARTITION partition_name VALUES in list_partition_expr, ...}
| LIST COLUMNS COLUMN_NUM SUBPARTITION TEMPLATE
{SUBPARTITION partition_name VALUES in list_partition_expr, ...}
参数解释
| 参数 | 描述 |
|---|---|
| tablegroupname | 表组名称,最长 64 个字符,字符只能有大小写英文字母,数字和下划线,而且必须以字母或下划线开头,并且不能使用 OceanBase 数据库的关键字。 如果要创建的表组名称已存在,并且没有指定 IF NOT EXISTS,则会出现错误。 |
| opt_tablegroup_option_list | 表组的分区方式、Locality、Primary Zone 必须和组内的表完全一致。
注意 |
| opt_tg_partition_option | 表组的分区规则定义,与 CREATE TABLE 使用同样的分区方式。 表组没有具体的列定义,所以 KEY、RANGE COLUMNS、LIST COLUMNS 不需要写出具体的列,只需要指定列个数(COLUMN_NUM)。 |
示例
创建名为
myTableGroup1的表组。obclient> CREATE TABLEGROUP myTableGroup1; Query OK, 0 rows affected obclient> CREATE TABLE myt1 (c1 int, c2 int ) TABLEGROUP = myTableGroup1; Query OK, 0 rows affected obclient> CREATE TABLE myt2 (c1 int, c2 int ) TABLEGROUP = myTableGroup1; Query OK, 0 rows affected创建
HASH分区的表组tgh,同时创建HASH分区的表ttgh与ttgh2且分区个数相同。obclient> CREATE TABLEGROUP tgh PARTITION BY HASH PARTITIONS 10; Query OK, 0 rows affected obclient> CREATE TABLE ttgh(c1 INT, c2 INT) PARTITION BY HASH(c1) PARTITIONS 10; Query OK, 0 rows affected obclient> CREATE TABLE ttgh2(c1 INT, c2 INT) PARTITION BY HASH(c1) PARTITIONS 10; Query OK, 0 rows affected