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

时间:2023-11-01 16:22:50

操作步骤

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

     1 2 3 4 5 6 7 8 910111213
    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 } ]    [ COMPRESS | NOCOMPRESS ]    [ TABLESPACE tablespace_name ]    [ DISTRIBUTE BY { REPLICATION                     | { HASH ( column_name [,...] )                     | { RANGE ( column_name [, ...] ) SLICE REFERENCES tablename                         | ( slice_less_than_item [, ...]                         | slice_start_end_item [, ...] )                    | { LIST ( column_name [, ...] ) SLICE REFERENCES tablename                         | ( slice_values_item [, ...] )  }}} } ]

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

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

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

    1
    openGauss=# 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/distributed-devg-v2-opengauss/gaussdb-v5r2c10-0218.html