[TOC] # 表组管理命令 通过修改表的`TABLE GROUP`属性,可以把一个表加入或移出一个表组,或者改变其`TABLE GROUP`属性。修改了表的`TABLE GROUP`属性以后,Root Service 会在后台执行副本的迁移,把属于同一个 Partition Group 的副本调度到同一台机器上,并发起命令把这些分区并入一个复制组(Replication Group)中。 ## 创建表组 下述示例语句展示了创建表组 grp1: ~~~ obclient> CREATE TABLEGROUP grp1; ~~~ ## 移出表组 下述示例语句展示了把表 t1 移出表组: ~~~ obclient> ALTER TABLE t1 SET TABLEGROUP ''; ~~~ ## 迁入表组 下述示例语句为把表 t1 加入表组 grp1: ~~~ obclient> ALTER TABLE t1 SET TABLEGROUP grp1; ~~~ ## 迁移表组 下述示例语句为把表 t1(原先的表组 grp1 中) 迁移进表组 grp2: ~~~ obclient> ALTER TABLE t1 SET TABLEGROUP grp2; ~~~ ## 删除表组 下述为删除表组语句的语法,但是如果有任何表的`TABLE GROUP`属性引用了目标表组,则该表组不允许被删除: ~~~ obclient> DROP TABLEGROUP grp1; ~~~ ## 修改分区方式 对于属于某一个表组的表,不允许使用`ALTER TABLE`直接修改这个表的分区方式、Locality 和 Primary Zone 属性。必须使用`ALTER TABLE GROUP`语句来进行操作。 修改一个表组的这些属性时,实际上会同时原子地修改属于这个表组中所有表的对应属性。 ## 修改 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'; ~~~ ## 删除分区 下述示例语句删除了把表组 grp1 中所有表的 p0 和 p1分区。该操作仅支持 Range 分区,这意味着这里的 p0 和 p1 是创建表组的时候给 Range 分区指定的分区名,而不是每个表上的分区名。系统根据 Range 分割点能够找到每个表对应的分区: ~~~ obclient> ALTER TABLEGROUP grp1 DROP PARTITION (p0,p1); ~~~ ## 增加分区 下述示例语句会为表组 grp1 中所有表都增加一个 p4 分区。该操作仅支持 Range 分区: ~~~ obclient> ALTER TABLEGROUP grp1 ADD PARTITION (PARTITION p4 VALUES LESS THAN (200)); ~~~