PostgreSQL配置文件和计算查询设计

时间:2017-04-13 22:17:50

标签: postgresql config calculation

我是PG的新手并且尝试运行这个简单的查询并且它崩溃了Postgres。如果我只尝试计算r1,那么查询会在几秒钟内完成,但会说"内存不足"如果我尝试计算除了r1之外的r2到r6,如下所示。查询设计不佳?我将在其他计算中引用计算字段r1 ... r6,因此考虑将此查询作为视图。我的密钥配置文件参数如下。 Windows 10,PG 9.6,40GB RAM,64位。关于该怎么做的任何想法?谢谢!

已编辑:我尝试将LIMIT 500添加到最后并且有效,但如果我对此查询运行查询,即在另一个查询中使用计算的r1,r2,r3 ...,新查询是否会查看全部记录还是仅限于500?

SELECT
public.psda.price_y1,
public.psda.price_y2,
public.psda.price_y3,
public.psda.price_y4,
public.psda.price_y5,
public.psda.price_y6,
public.psda.price_y7,
(price_y1 - price_y2) / nullif(price_y2, 0) AS r1,
(price_y2 - price_y3) / nullif(price_y3, 0) AS r2,
(price_y3 - price_y4) / nullif(price_y4, 0) AS r3,
(price_y4 - price_y5) / nullif(price_y5, 0) AS r4,
(price_y5 - price_y6) / nullif(price_y6, 0) AS r5,
(price_y6 - price_y7) / nullif(price_y7, 0) AS r6
FROM
public.psda

我的配置文件参数:

max_connections = 50
shared_buffers = 1GB
effective_cache_size = 20GB
work_mem = 400MB
maintenance_work_mem = 1GB
wal_buffers = 16MB
max_wal_size = 2GB
min_wal_size = 1GB
checkpoint_completion_target = 0.7
default_statistics_target = 100

1 个答案:

答案 0 :(得分:1)

使用此服务http://pgtune.leopard.in.ua/

当计算total RAM for PostgreSQL = total RAM - RAM for OS

PGTune根据给定硬件配置的最大性能计算PostgreSQL的配置。

它不是PostgreSQL优化设置的灵丹妙药。

许多设置不仅取决于硬件配置,还取决于数据库的大小,客户端数量和查询的复杂性,因此最佳配置数据库只能给出所有这些参数。