使用 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 中并行获取数据的主要内容,如果未能解决你的问题,请参考以下文章

500g硬盘安装debian怎么分区

将我的日期列从 Excel 导入/转换为 SQL Server 中的日期时间数据类型?

Windows Server 2012 的 硬盘分区方案

在Linux环境下安装oracle 11g r2 ,磁盘分区如何划分?

Linux 基础课程笔记

Linux各种分区方案