[TOC] # CREATE TABLEGROUP ## 描述 该语句用来创建表组。 **说明** 只有租户下的管理员权限才可以创建表组。 ## 格式 ~~~ 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, ...} ~~~ ## 参数解释 <table data-tag="table" id="table-q5i-3pc-heq" class="table"><colgroup width="181" span="1" data-tag="col" id="col-v6a-dar-irm" colwidth="1*" colnum="1" colname="col1" style="width:50%" class="col"></colgroup><colgroup width="448" span="1" data-tag="col" id="col-60i-c41-9yu" colwidth="1*" colnum="2" colname="col2" style="width:50%" class="col"></colgroup><thead id="thead-e67-v30-bx0" class="thead"><tr id="tr-rxn-odj-clo"><th id="td-r4d-xjz-5t9"><p id="p-h9y-nfi-m36"><b>参数</b></p></th><th id="td-l74-8kc-v5n"><p id="p-kj7-nqu-c4e"><b>描述</b></p></th></tr></thead><tbody data-tag="tbody" id="tbody-lop-zjm-rk9" class="tbody"><tr data-tag="tr" id="tr-in3-9mj-bqo" class="tr"><td data-tag="td" id="td-ckv-0nw-7r9" class="td"><p data-tag="p" id="p-ds5-ihh-rwo" class="p">tablegroupname</p></td><td data-tag="td" id="td-kh7-o0o-cwg" class="td"><p data-tag="p" id="p-hc3-w4b-pku" class="p">表组名称,最长64个字符,字符只能有大小写英文字母,数字和下划线,而且必须以字母或下划线开头,并且不能OceanBase的关键字。</p><p data-tag="p" id="p-0ew-j99-wgo" class="p">如果要创建的表组名称已存在,并且没有指定IF NOT EXISTS,则会出现错误。</p></td></tr><tr data-tag="tr" id="tr-c0s-l6a-2w1" class="tr"><td data-tag="td" id="td-qgx-bhz-q31" class="td"><p data-tag="p" id="p-6k7-ia7-2hg" class="p">opt_tablegroup_option_list</p></td><td data-tag="td" id="td-jwi-zin-ewm" class="td"><p data-tag="p" id="p-110-iv9-yx8" class="p">表组的分区方式、locality、primary zone必须和组内的表完全一致。</p><p data-tag="p" id="p-17t-h6w-rli" class="p">组内的表信息不能独立变更某一项,只可以通过操作表组进行批量操作。</p><p data-tag="p" id="p-njm-7fo-959" class="p">相同的locality:副本类型、个数、位置要完全一致</p><p data-tag="p" id="p-fuj-1c1-jiw" class="p">相同的primary zone:leader位置及其优先级要完全一致</p><p data-tag="p" id="p-njr-fpk-cwq" class="p">相同的分区方式:</p><ul lake-indent="0" data-tag="ul" id="ul-104-3tg-p3d" class="ul"><li data-tag="li" id="li-hh0-sz4-snw" class="li"><p id="p-3s5-t0d-lks">分区类型相同(例如,都是hash+range分区)。</p></li><li data-tag="li" id="li-2q9-eq4-jzz" class="li"><p id="p-lzb-7w7-ny6">如果是key分区,要求引用的列数相同,且分区个数相同。</p></li><li data-tag="li" id="li-g5y-mk0-72s" class="li"><p id="p-p74-tgq-c5d">如果是hash分区,要求分区个数相同。</p></li><li data-tag="li" id="li-1fk-er2-ngn" class="li"><p id="p-smf-bxc-3y2">如果是range columns分区,要求引用的列数相同,且分区数相同,且range分割点相同。</p></li><li data-tag="li" id="li-faz-wf0-naf" class="li"><p id="p-e3q-foe-fmt">如果是range分区,且分区数相同,且range分割点相同。</p></li><li data-tag="li" id="li-vsc-dye-fvv" class="li"><p id="p-xh8-bfj-izh">对于二级分区,根据分区类型,要求和1)~4)一致</p></li></ul></td></tr><tr data-tag="tr" id="tr-oq2-vnc-1x3" class="tr"><td data-tag="td" id="td-0b3-f5x-u1y" class="td"><p data-tag="p" id="p-9r2-du4-o3r" class="p">opt_tg_partition_option</p></td><td data-tag="td" id="td-g34-m06-qz4" class="td"><p data-tag="p" id="p-9z5-c68-qct" class="p">表组的分区规则定义,与CREATE TABLE使用同样的分区方式。</p><p data-tag="p" id="p-bk2-zmc-eob" class="p">表组没有具体的列定义,所以KEY、RANGE COLUMNS、LIST COLUMNS不需要写出具体的列,只需要指定列个数(COLUMN_NUM)。</p></td></tr></tbody></table> ## 示例 * 创建名为 myTableGroup1 的表组。 ~~~ 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,且分区个数相同。 ~~~ 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) ~~~