使用 gp_segment_id 作为分区列从 greenplum 中并行获取数据
Posted
技术标签:
【中文标题】使用 gp_segment_id 作为分区列从 greenplum 中并行获取数据【英文标题】:Using gp_segment_id as the partition column to get data from greenplum in parallel 【发布时间】:2021-12-02 15:18:29 【问题描述】:我可以使用多个以 gp_segment_id 为条件的并行查询从 greenplum 表中并行选择数据吗? 这种方法有什么缺点?我会在结果的一致性方面遇到任何问题吗?
【问题讨论】:
【参考方案1】:是的。 gp_segment_id 将表现得像普通列。唯一的问题是它被隐藏了。
gpadmin=# select gp_segment_id,* from test1;
gp_segment_id | a
---------------+---
20 | 3
39 | 2
34 | 1
(3 rows)
gpadmin=# select gp_segment_id,* from test2;
gp_segment_id | a
---------------+---
20 | 3
25 | 4
39 | 2
34 | 1
(4 rows)
gpadmin=# select * from test1 p join test2 q on p.gp_segment_id=q.gp_segment_id;
a | a
---+---
2 | 2
1 | 1
3 | 3
(3 rows)
gpadmin=#
您可以在连接中使用 gp_segment_id,其中条件等只是确保并行查询组合不会导致资源倾斜。
【讨论】:
以上是关于使用 gp_segment_id 作为分区列从 greenplum 中并行获取数据的主要内容,如果未能解决你的问题,请参考以下文章
将我的日期列从 Excel 导入/转换为 SQL Server 中的日期时间数据类型?