云数据库 GAUSSDB-查看数据倾斜状态:操作步骤

时间:2024-01-23 20:08:53

操作步骤

  1. 分析数据源特征,选择若干个键值重复度小,数据分布比较均匀的备选分布列。
  2. 步骤1中选择一个备选分布列创建目标表。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    CREATE [ [ GLOBAL | LOCAL ] [ TEMPORARY | TEMP ] | UN LOG GED ] TABLE [ IF NOT EXISTS ] table_name 
        ({ column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ]
        | table_constraint    | LIKE source_table [ like_option [...] ] }
        [, ... ])    [ WITH ( {storage_parameter = value} [, ... ] ) ]
        [ ON COMMIT { PRESERVE ROWS | DELETE ROWS } ]
        [ COMPRESS | NOCOMPRESS ]    [ TABLESPACE tablespace_name ]
        [ DISTRIBUTE BY { REPLICATION 
                        | { HASH ( column_name [,...] ) 
                        | { RANGE ( column_name [, ...] ) SLICE REFEREN CES  tablename 
                            | ( slice_less_than_item [, ...] 
                            | slice_start_end_item [, ...] )
                        | { LIST ( column_name [, ...] ) SLICE REFERENCES tablename 
                            | ( slice_values_item [, ...] )  }}} } ]
    

  3. 参照前面章节中的办法向目标表中导入小批量数据。

    对于单个数据源文件,在导入时,可通过均匀切割,导入部分切割后的数据源文件来验证数据倾斜性。

  4. 检验数据倾斜性。命令中的table_name ,请填入实际的目标表名。

    1
    postgres=# SELECT a.count,b.node_name FROM (SELECT count(*) AS count,xc_node_id FROM table_name GROUP BY xc_node_id) a, pgxc_node b WHERE a.xc_node_id=b.node_id ORDER BY a.count desc;
    

  5. 若各DN上数据分布差小于10%,表明数据分布均衡,选择的分布列合适。请清理已导入小批量数据,导入全量数据,以完成数据迁移。

    若各DN上数据分布差大于等于10%,表明数据分布倾斜,请从步骤1的备选分布列中删除该列,删除目标表,并重复步骤2步骤3步骤4步骤5

  6. (可选)如果上述步骤不能选出适合的分布列,需要从备选分布列选择多个列的组合作为分布列来完成数据迁移。
support.huaweicloud.com/devg-v1-gaussdb/gaussdb_devg_0214.html