云数据库 TaurusDB-LIST DEFAULT HASH:创建LIST DEFAULT HASH分区表

时间:2025-02-12 14:56:21

创建LIST DEFAULT HASH分区表

  • 语法
    CREATE TABLE [ schema. ]table_name table_definition   PARTITION BY LIST [COLUMNS] (expr)   SUBPARTITION BY ...   (list_partition_definition[, ..., list_partition_definition],    default_partition_definition   )

    其中,default_partition_definition为:

    PARTITION partition_name DEFAULT [PARTITIONS number]

    每个分区的定义也可以包含二级分区, 二级分区也支持使用LIST DEFAULT分区,定义如下:

    SUBPARTITION subpartition_name DEFAULT
    表2 参数说明

    参数名称

    参数说明

    table_name

    要创建的表名称。

    partition_name

    • 只有一个DEFAULT分区时,表示分区名称。不可与其他分区表重复。
    • 当有多个DEFAULT分区时,表示分区名称前缀。“partition_name+序号”表示分区名称。

    subpartition_name

    子分区名称。同一个表中不可重复,子分区最多只支持一个DEFAULT分区。

    number

    DEFAULT分区按照哈希规则分成number个分区,通过number指定分区个数。PARTITIONS number是可选项,不指定时,则默认为一个DEFAULT分区。

  • 示例

    创建单个DEFAULT分区示例如下:

    CREATE TABLE list_default_tbl (  a INT,  b INT)PARTITION BY LIST (a)(PARTITION p0 VALUES IN (1,2,3,4,5), PARTITION p1 VALUES IN (6,7,8,9,10), PARTITION pd DEFAULT);

    创建多个DEFAULT分区示例如下:

    CREATE TABLE list_default_hash (  a INT,  b INT)PARTITION BY LIST (a)(PARTITION p0 VALUES IN (1,2,3,4,5), PARTITION p1 VALUES IN (6,7,8,9,10), PARTITION pd DEFAULT PARTITIONS 3);

    使用LIST COLUMNS示例如下:

    CREATE TABLE t_goods(  country   VARCHAR(30),  year      VARCHAR(60),  goods     TEXT) PARTITION BY LIST COLUMNS(country)(  PARTITION p1 VALUES IN ('China'),  PARTITION p2 VALUES IN ('USA'),  PARTITION p3 VALUES IN ('Asia'),  PARTITION p3 VALUES IN ('India'),  PARTITION p_deft DEFAULT PARTITIONS 5);

    通过explain查看分区:

    EXPLAIN SELECT * FROM list_default_hash;

    显示结果如下:

    +----+-------------+-------------------+-------------------+------+---------------+------+---------+------+------+----------+-------+| id | select_type | table             | partitions        | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra |+----+-------------+-------------------+-------------------+------+---------------+------+---------+------+------+----------+-------+|  1 | SIMPLE      | list_default_hash | p0,p1,pd0,pd1,pd2 | ALL  | NULL          | NULL | NULL    | NULL |    1 |   100.00 | NULL  |+----+-------------+-------------------+-------------------+------+---------------+------+---------+------+------+----------+-------+1 row in set (0.04 sec)

    二级分区支持LIST DEFAULT类型,示例如下:

    CREATE TABLE test (a int, b int)PARTITION BY RANGE(a)SUBPARTITION BY LIST(b) (PARTITION part0 VALUES LESS THAN (10)( SUBPARTITION sub0 VALUES IN (1,2,3,4,5),  SUBPARTITION sub1 DEFAULT),PARTITION part1 VALUES LESS THAN (20)( SUBPARTITION sub2 VALUES IN (1,2,3,4,5),  SUBPARTITION sub3 DEFAULT),PARTITION part2 VALUES LESS THAN (30)( SUBPARTITION sub4 VALUES IN (1,2,3,4,5),  SUBPARTITION sub5 DEFAULT));

    一级分区存在多个LIST DEFAULT HASH分区的情况下,仅支持HASH或KEY二级分区:

    CREATE TABLE list_default_hash_sub (  a INT,  b INT)PARTITION BY LIST (a)SUBPARTITION BY HASH (b) SUBPARTITIONS 20(PARTITION p0 VALUES IN (1,2,3,4,5), PARTITION p1 VALUES IN (6,7,8,9,10), PARTITION pd DEFAULT PARTITIONS 3);
support.huaweicloud.com/kerneldesc-gaussdbformysql/gaussdbformysql_20_0050.html