GP如何对数据进行重分布

背景:

针对于greenplump出现数据分布不均匀,导致主节点资源消耗异常,以下步骤可以使用增加分布键的方式 进行数据的重新分布

提前将所需要更改的表统计出来

select a.skcnamespace, a.skcrelname, b.sotdsize, a.skccoeff from gp_toolkit.gp_skew_coefficients a, gp_toolkit.gp_size_of_table_disk b where b.sotdoid = a.skcoid and b.sotdsize > 1024*1024*100 and a.skccoeff > 10 order by b.sotdsize desc

登陆gp的主节点

su - gpadmin ## 切换到gpadmin用户

psql youdata ##登陆youdata库中

\d 'schema'.'表名';

查询出表中所有数据

https://office.netease.com/api/admin/file/download?path=cowork/2023/07/25/bb3361a663864105aa2f91149ba2ce21.png

例如上图中的的column的内容

选取唯一的值例如带有id的字段

查询数据量

select count(*) from 'schema'.'表名'; ##用作对比

alter table 'schema'.'表名' set distributed by ("唯一字段");

再次查询数据量是否一致

select count(*) from 'schema'.'表名';

清理表中的垃圾数据,并更新表的统计信息。

vacuum analyze 'schema'.'表名';