gpt4 book ai didi

sql - Postgres on AWS 过滤器或聚合的性能问题

转载 作者:行者123 更新时间:2023-11-29 12:13:07 26 4
gpt4 key购买 nike

我正在开发一个带有 aprox 表的系统。 1300 万条记录。对于 postgres 来说这似乎没什么大不了的,但是我在访问这个特定的表时遇到了严重的性能问题。

该表大约有。 60 列(我知道太多了,但我不能改变它,因为超出我的意愿)。

硬件不是问题。它在 AWS 上运行。我测试了几种配置,甚至是用于 postgres 的新 RDS:

                             vCPU   ECU     mem(gb) 

m1.xlarge 64 bits 4 8 15

m2.xlarge 64 bits 2 6,5 17

hs1.8xlarge 64 bits 16 35 117 SSD

我用 pgtune 调整了 pg 设置。并且还设置了ubuntu的内核sshmall和shmmax。

一些“解释分析”查询:

从中选择计数(*):

$Aggregate  (cost=350390.93..350390.94 rows=1 width=0) (actual time=24864.287..24864.288 rows=1 loops=1)
-> Index Only Scan using core_eleitor_sexo on core_eleitor (cost=0.00..319722.17 rows=12267505 width=0) (actual time=0.019..12805.292 rows=12267505 loops=1)
Heap Fetches: 9676
Total runtime: 24864.325 ms

从中选择不同的 core_eleitor_city:

HashAggregate  (cost=159341.37..159341.39 rows=2 width=516) (actual time=15965.740..15966.090 rows=329 loops=1)
-> Bitmap Heap Scan on core_eleitor (cost=1433.53..159188.03 rows=61338 width=516) (actual time=956.590..9021.457 rows=5886110 loops=1)
Recheck Cond: ((core_eleitor_city)::text = 'RIO DE JANEIRO'::text)
-> Bitmap Index Scan on core_eleitor_city (cost=0.00..1418.19 rows=61338 width=0) (actual time=827.473..827.473 rows=5886110 loops=1)
Index Cond: ((core_eleitor_city)::text = 'RIO DE JANEIRO'::text)
Total runtime: 15977.460 ms

我在经常用于过滤或聚合的列上有 btree 索引。

所以,鉴于我无法更改我的表格设计。我可以做些什么来提高性能吗?

任何帮助都会很棒。

谢谢

最佳答案

您在 VPS 集群上聚合了约 1230 万行和约 590 万行,如果我没记错的话,它可能跨越多个物理服务器,数据可能是从另一组不同服务器上的 SAN 中提取的Postgres 本身。

恕我直言,除了 a) 不运行基本上访问整个数据库表的查询和 b) 如果可能的话,如果可能的话,使用触发器保持预先计数坚持这样做。

关于sql - Postgres on AWS 过滤器或聚合的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20708082/

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