CREATE TABLEGROUP ====================================== 描述 ----------- 该语句用来创建表组。 **说明** 只有租户下的管理员权限才可以创建表组。 格式 ----------- ```javascript 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必须和组内的表完全一致。 组内的表信息不能独立变更某一项,只可以通过操作表组进行批量操作。 相同的locality:副本类型、个数、位置要完全一致 相同的primary zone:leader位置及其优先级要完全一致 相同的分区方式: * 分区类型相同(例如,都是hash+range分区)。 * 如果是key分区,要求引用的列数相同,且分区个数相同。 * 如果是hash分区,要求分区个数相同。 * 如果是range columns分区,要求引用的列数相同,且分区数相同,且range分割点相同。 * 如果是range分区,且分区数相同,且range分割点相同。 * 对于二级分区,根据分区类型,要求和1)\~4)一致 | | opt_tg_partition_option | 表组的分区规则定义,与CREATE TABLE使用同样的分区方式。 表组没有具体的列定义,所以KEY、RANGE COLUMNS、LIST COLUMNS不需要写出具体的列,只需要指定列个数(COLUMN_NUM)。 | 示例 ----------- * 创建名为 myTableGroup1 的表组。 ```javascript OceanBase(admin@test)> CREATE TABLEGROUP myTableGroup1; Query OK, 0 rows affected (0.07 sec) OceanBase(admin@test)> create table myt1 (c1 int, c2 int ) tablegroup = myTableGroup1; Query OK, 0 rows affected (0.28 sec) OceanBase(admin@test)> create table myt2 (c1 int, c2 int ) tablegroup = myTableGroup1; Query OK, 0 rows affected (0.26 sec) ``` * 创建 hash 分区的表组 tgh,同时创建 hash 分区的表ttgh,且分区个数相同。 ```javascript OceanBase(admin@test)> create tablegroup tgh locality='F,R{ALL_SERVER}@z1' partition by hash partitions 10; Query OK, 0 rows affected (0.09 sec) OceanBase(admin@test)> create table ttgh(c1 int, c2 int) locality='F,R{ALL_SERVER}@z1' partition by hash(c1) partitions 10; Query OK, 0 rows affected (0.55 sec) OceanBase(admin@test)> create table ttgh2(c1 int, c2 int) locality='F,R{ALL_SERVER}@z1' partition by hash(c2) partitions 10; Query OK, 0 rows affected (0.39 sec) ```