0

我是 PG 新手,试图运行这个简单的查询,但它正在使 Postgres 崩溃。如果我只尝试计算 r1,查询会在几秒钟内工作,但如果我尝试计算 r2 到 r6 以及如下所示的 r1,则会显示“内存不足”。查询设计不佳?我将在其他计算中引用计算字段 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
4

1 回答 1

1

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

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

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

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

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

于 2017-07-06T12:15:42.113 回答