数据仓库服务 GAUSSDB(DWS)-查看数据倾斜状态:操作步骤

时间:2023-11-22 14:18:40

操作步骤

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] 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 | DROP } ]
        [ COMPRESS | NOCOMPRESS ]    [ TABLESPACE tablespace_name ]
        [ DISTRIBUTE BY { REPLICATION 
                        | ROUNDROBIN
                        | { HASH ( column_name [,...] ) } } ];
    

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

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

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

    1
    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

    此处的数据分布差表示实际查询到DN上的数据量与DN平均数据量的差异。

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

support.huaweicloud.com/devg-820-dws/dws_04_0228.html