gpt4 book ai didi

database - 查询连接如何在 MPP 数据库中工作?

转载 作者:搜寻专家 更新时间:2023-10-30 20:25:44 25 4
gpt4 key购买 nike

我想知道 SQL join 在 Greenplum 这样的 MPP 数据库中是如何工作的,如果我想连接分布在多个段节点上的两个大表,那么数据是如何处理的?

主节点是否从所有节点抓取所有相关数据,然后进行连接并返回结果集?如果您要执行许多此类表连接,这不会成为一个潜在的大瓶颈吗?

我从 here 中找到了以下内容:

An MPP database tries to segment the data across multiple servers so that each server node can work independently of the others. For example, to perform a JOIN between a large table and a small table, an MPP database will store on each node a subset of rows from the large table, along with a copy of the entire small table. Each node can then perform the JOIN independently of the other nodes, thus eliminating the bottlenecks created by shared resources. This enables massively parallel processing, where a large query can be decomposed into a set of smaller queries, each of which runs independently on a separate server.

这专门讨论了与一个小表的连接,但没有提到连接两个大表..

最佳答案

如果两个表按相同的键分布,则连接发生在每个段的本地。如果要连接两个非常大的表,建议您使用相同的键分布表。

当两个表不是由同一个键分布时,Greenplum 将使用表的统计信息将数据从较小的表复制到较大的表的位置以执行连接。现在,它并没有改变一切。它只移动它需要的数据。

假设您有非常大且按不同键分布的预测表和实际表。实际值大于预测值,您的比较过滤了仅一个月的预测值。 Greenplum 将创建一个仅查询该月预测表的切片,然后将结果发送到其他段以连接到实际表。意识到这是在每个段上并行完成的,因此速度极快且可扩展。

master 创建查询计划并管理执行,但在查询完成之前数据不会发送到 master。查询由段处理。所以不,主节点不会“从所有节点获取所有相关数据,然后进行连接并返回结果集”。

关于database - 查询连接如何在 MPP 数据库中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34960734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com