基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
将一级分区表加入表组
更新时间:2023-08-09 14:11:21
创建一级分区表表组后,您可以将一级分区表加入到表组。
OceanBase 数据库的 MySQL 模式当前支持通过以下两种方式将表添加到分区表表组:
创建表时直接指定表组
创建表后再将表加入表组
注意事项
将一级分区表添加到分区表表组前,需要注意以下事项:
如果要将一张分区表加入到已存在的分区表表组,则需要保证该分区表的分区类型及分区个数均与表组完全一致。
如果表或表组指定了 Locality 和 Primary Zone 信息,则其 Locality 和 Primary Zone 信息也必须完全一致。
创建表时直接指定表组
您可以通过 CREATE TABLE 语句在创建表时将表添加至表组。使用该方式将表加入表组时,需要确保当前用户拥有表的 CREATE 权限。
示例:
创建 Range Columns 分区的表组
tg1_rc。obclient> CREATE TABLEGROUP tg1_rc PARTITION BY RANGE COLUMNS 1 ( 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 分区的表,并将表加入到表组
tg1_rc中。obclient> CREATE TABLE t1_rc (id INT NOT NULL,name varchar(50),t_date date NOT NULL) TABLEGROUP =tg1_rc PARTITION BY RANGE COLUMNS(id) ( PARTITION p0 VALUES LESS THAN(100), PARTITION p1 VALUES LESS THAN(200), PARTITION p2 VALUES LESS THAN(300) ); Query OK, 0 rows affected
创建表后再将表加入表组
创建表之后,您可以通过 ALTER TABLEGROUP 或 ALTER TABLE 语句将表加入已存在的表组。
SQL 语法如下:
ALTER TABLEGROUP语句ALTER TABLEGROUP tablegroup_name ADD [TABLE] table_name;其中,
table_name表示待加入表组的表名,如果需要加入多个表,表名之间使用英文逗号(,)分隔。使用该语句将表加入表组时,需要确保当前用户拥有全局ALTER权限。ALTER TABLE语句ALTER TABLE table_name SET TABLEGROUP tablegroup_name;使用该语句将表加入表组时,需要确保当前用户拥有目标表的
ALTER权限。
示例:
创建 List Columns 分区的表组
tg1_lc。obclient> CREATE TABLEGROUP tg1_lc PARTITION BY LIST COLUMNS 1 ( PARTITION p0 VALUES IN(1,2), PARTITION p1 VALUES IN(3,4), PARTITION p2 VALUES IN(5,6) ); Query OK, 0 rows affected创建 List Columns 分区的表
t1_lc。obclient> CREATE TABLE t1_lc (id INT NOT NULL,name varchar(50),t_date date NOT NULL) PARTITION BY LIST COLUMNS(id) ( PARTITION p0 VALUES IN(1,2), PARTITION p1 VALUES IN(3,4), PARTITION p2 VALUES IN(5,6) ); Query OK, 0 rows affected将表添加至表组。
obclient> ALTER TABLEGROUP tg1_lc ADD TABLE t1_lc; Query OK, 0 rows affected或者
obclient> ALTER TABLE t1_lc SET TABLEGROUP tg1_lc; Query OK, 0 rows affected
将一级分区表加入表组后,您还可以执行将一级分区表从表组中移出、将一级分区表迁移到其他表组以及删除表组等操作,这些操作与普通表组相同,具体操作请参见 表组管理命令。