基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
表组管理命令
更新时间:2023-07-19 13:03:07
本节内容主要介绍非分区表组管理命令。
本节主要介绍非分区表组的管理,分区表组的相关内容请参见 创建一级分区表表组。
创建表组
SQL 语法如下:
CREATE TABLEGROUP [IF NOT EXISTS] tablegroupname [opt_tablegroup_option_list]
opt_tablegroup_option_list:
tablegroup_option [tablegroup_option]
tablegroup_option:
LOCALITY [=] locality_name
| PRIMARY_ZONE [=] primary_zone_name
tablegroupname表组名称,最长 64 个字符,字符只能有大小写英文字母,数字和下划线,而且必须以字母或下划线开头,并且不能使用 OceanBase 的关键字。如果要创建的表组名称已存在,并且没有指定 IF NOT EXISTS,则会出现错误。opt_tablegroup_option_list表组的分区方式、Locality、Primary Zone 必须和组内的表完全一致。组内的表信息不能独立变更某一项,只可以通过操作表组进行批量操作。
创建表组 grp1 的示例如下:
obclient> CREATE TABLEGROUP grp1;
将表加入表组
将表 t1 加入表组 grp1 的示例如下:
obclient> ALTER TABLE t1 SET TABLEGROUP grp1;
将表移出表组
将表 t1 移出表组的示例如下:
obclient> ALTER TABLE t1 SET TABLEGROUP '';
将表迁移到其他表组
将表 t1(原先在表组 grp1 中) 迁移进表组 grp2 的示例如下:
obclient> ALTER TABLE t1 SET TABLEGROUP grp2;
删除表组
下述为删除表组语句的语法,但是如果有任何表的 TABLE GROUP 属性引用了目标表组,则该表组不允许被删除。
SQL语法如下:
DROP TABLEGROUP [IF EXISTS] tablegroupname
tablegroupname表组名称。如果要删除的表组名称不存在,并且没有指定IF EXISTS,则会出现错误。
将表组 grp1 删除示例如下:
obclient> DROP TABLEGROUP grp1;
删除表组之前可以通过如下命令查看表组中是否包含表。如果包含表,在删除表组之前需要先将表从表组中移出。
obclient> SHOW TABLEGROUPS;
+-----------------+-------------------------------+--------------------+
| Tablegroup_name | Table_name | Database_name |
+-----------------+-------------------------------+--------------------+
| grp1 | t1 | oceanbase |
+-----------------+-------------------------------+--------------------+
修改表组的 Locality 和 Primary Zone
SQL语法如下:
ALTER TABLEGROUP tablegroupname alter_tablegroup_actions
alter_tablegroup_actions:
alter_tablegroup_action
| alter_tablegroup_action, alter_tablegroup_action
alter_tablegroup_action:
SET LOCALITY [=] locality_name
|SET PRIMARY_ZONE [=] primary_zone_name
modify_tg_partition_info修改表组的分区规则。LOCALITY locality_name指定表组的 locality。PRIMARY_ZONE primary_zone_name指定表组的主 Zone。
修改 Locality
将表组 grp1 中所有表的 Locality 都修改为 F@z1,F@z3 的示例如下:
obclient> ALTER TABLEGROUP grp1 SET locality = 'F@z1,F@z3';
修改 Primary Zone
将表组 grp1 中所有表的 Primary Zone 都修改为 z1,z2 的示例如下:
obclient> ALTER TABLEGROUP grp1 SET primary_zone = 'z1,z2';