GaussDB Hash表分布列选择原则及数据倾斜检测

GaussDB中的哈希表分布选择原则包括:列值离散、避免常量filter、选择Join条件列。不当的选择可能导致数据倾斜,影响查询性能。通过pgxc_get_table_skewness视图或table_skewness()函数可检测数据倾斜,大型表需通过实例数据存储目录分析。数据倾斜检查步骤包括分析DN数据目录使用率、确认实例、查找文件大小等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击上方"蓝字"

关注我们吧!

GaussDB如果采用分布式部署模式,则可以根据数据量以及用途定义两种不同分布方式的表,分别为复制表(Replication)和哈希(Hash)表。

复制表(Replication)是将表中的全量数据在集群的每一个DN实例上保留一份,主要适用于数据量较小的表。这种存储方式的优点是每个DN上都有此表的全量数据,在Join操作中可以避免数据重分布操作,从而减小网络开销。缺点是每个DN都保留了表的完整数据,造成数据的冗余。一般情况下只有较小的维度表才会定义为Replication表。

哈希(Hash)表是将表中某一个或几个字段进行hash运算后,生成对应的hash值,根据DN实例与哈希值的映射关系获得该元组的目标存储位置。对于Hash分布表,在读/写数据时可以利用各个节点的IO资源,大大提升表读/写速度。一般情况下大表定义为Hash表。

Hash分布表的分布列选取至关重要,需要满足以下原则:

(1)列值应比较离散,以便数据能够均匀分布到各个DN。例如,考虑选择表的主键为分布列,如在人员信息表中选择身份证号码为分布列。

(2)在满足第一条原则的情况下尽量不要选取存在常量filter的列。例如,表dwcjk相关的部分查询中出现dwcjk的列zqdh存在常量的约束(例如zqdh=’000001’),那么就应当尽量不用zqdh做分布列。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值