Greenplum之分布键

复制表和有分布键的表

复制表:常用于小表。每个节点上都有完整一份
分布键表:按照分布键进行hash分布或随机分布,使得数据较均匀地分布在每个节点上,并在后续join时减少数据传输。

分布键

  • hash分布
    distributed by (my_column)
  • 随机分布
    distributed randomly

查看数据分布

要查看一个表中行的数据分布(每个Segment上的行数),可以运行一个这样的查询:

SELECT gp_segment_id, count(*)
FROM table_name GROUP BY gp_segment_id;

如果所有的Segment都有大致相同的行数,一个表就可以被认为是分布均匀的。
Note:
如果在复制表上运行该查询会执行失败,因为Greenplum数据库不允许用户查询复制表的gp_segment_id 系统列数
据。由于每个Segment上都有一份完整的表数据,复制表必然是均匀的。

检查查询过程倾斜

当一个查询被执行时,所有的Segment应该具有等量的负载来保证最好的性能。如果发现了一个执行性能低下的查
询, 可能需要使用EXPLAIN命令进行深入研究。有关使用EXPLAIN命令和查询 分析的信息,请见查询分析.
如果表的数据分布策略与查询谓词没有很好地匹配,查询执行负载可能会倾斜。要检查执行倾斜,可以运行一个这样
的查询:

SELECT gp_segment_id, count(*) 
FROM table_name
WHERE column='value' GROUP BY gp_segment_id;

这将显示对于给定的WHERE谓词,Segment会返回的行数。
如查看数据分布所说的, 该查询在复制表上运行时也会报错,因为在复制表上查询的 gp_segment_id列不具有参考
价值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值