gpt4 book ai didi

postgresql - 从 10 亿行 GreenPlum DB 中缓慢选择

转载 作者:可可西里 更新时间:2023-11-01 15:02:10 31 4
gpt4 key购买 nike

我在 GreenPlum 上创建了下表:

CREATE TABLE data."CDR"
(
mcc text,
mnc text,
lac text,
cell text,
from_number text,
to_number text,
cdr_time timestamp without time zone
)
WITH (
OIDS = FALSE,appendonly=true, orientation=column,compresstype=quicklz, compresslevel=1
)
DISTRIBUTED BY (from_number);

我已将 10 亿行加载到此表,但每个查询都非常慢。

我需要对所有字段(不仅是一个)进行查询,
我可以做些什么来加快查询速度?

使用分区?使用索引?
也许使用不同的数据库,如 Cassandra 或 Hadoop?

最佳答案

这在很大程度上取决于您正在执行的实际查询以及您的硬件设置。

由于您要查询所有字段,因此通过柱状定向获得的选择性可能对您的伤害大于帮助,因为无论如何您都需要扫描所有数据。我会删除柱状方向。

一般来说,索引在 Greenplum 系统中没有帮助。通常,所涉及的硬件数量往往会使扫描数据目录比执行索引查找更快。

分区可能会有很大帮助,但需要更好地理解数据。您可能正在访问特定的时间间隔,因此围绕 cdr_time 创建分区方案可以消除结果不需要的数据扫描。我最不想担心的是索引。

您按 from_number 分配可能会影响查询速度。系统将根据 from_number 散列数据,因此如果您在 from_number 上有选择地查询,数据将仅由拥有它的节点返回,您将不会利用系统的并行特性并将请求分散到所有节点节点。除非您要连接到 from_number 上的其他表,这允许连接在节点内并置和执行,否则我会将其更改为随机分布。

最重要的是硬件是什么以及您是否有适当数量的分割设置和资源来满足它们的问题。基本上每个段都是一个数据库。好的硬件可以处理每个节点的多个段,但如果您在轻型硬件上执行此操作,则需要找到段数与底层系统可以提供的段数相匹配的最佳点。

关于postgresql - 从 10 亿行 GreenPlum DB 中缓慢选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36429956/

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