基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
表组管理命令
更新时间:2023-08-09 14:11:21
本节内容主要介绍非分区表组管理命令。
本节主要介绍非分区表组的管理,分区表组的相关内容请参见 创建一级分区表表组。
创建表组
创建表组需要当前用户具有全局 CREATE 权限。
创建非分区表的 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;
删除表组
删除表组需要当前用户具有全局 DROP 权限。
删除表组时,如果有任何表的 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
修改表组属性需要当前用户具有全局 ALTER 权限。
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';