2017-04-13 7 views
0

PG를 처음 사용하고이 간단한 쿼리를 실행하려고하면 Postgres가 손상됩니다. 내가 r1을 계산하려고하면 몇 초 안에 쿼리가 작동하지만 아래의 r1 외에 r6을 통해 r2를 계산하려고하면 "메모리 부족"이라고 표시됩니다. 불충분 한 쿼리 디자인? 다른 계산에서는 계산 된 필드 r1 ... r6을 참조 할 것이므로이 쿼리를 뷰로 만드는 것에 대해 생각하고있었습니다. 필자의 주요 구성 파일 매개 변수는 다음과 같습니다. Windows 10, PG 9.6, 40GB RAM, 64 비트. 무엇에 관한 아이디어가 있습니까? 감사!계산을위한 PostgreSQL 구성 파일 및 쿼리 설계

편집 : 마지막에 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 

내 config 파일 매개 변수 :

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 
+0

관련이 있습니까? http://stackoverflow.com/questions/26478031/error-out-of-memory-on-machine-with-32gb-ram-and-without-swap-file – kennytm

+0

'public.psda'는 분명히 테이블입니까, 아니면 보기? –

+0

@DavidAldridge 확실히 테이블입니다. 나는 다른 프로젝트로 옮겼지만, 곧이 프로젝트로 돌아갈 것이다. –

답변

1

사용이 서비스 http://pgtune.leopard.in.ua/

때 CALC total RAM for PostgreSQL = total RAM - A의 최대 성능을 기반으로 PostgreSQL을위한 RAM for OS

PGTune의 계산 구성 주어진 하드웨어 구성.

PostgreSQL의 최적화 설정에 사용되는 것은 아닙니다.

많은 설정은 하드웨어 구성뿐만 아니라 데이터베이스 크기, 클라이언트 수 및 쿼리 복잡성에 따라 달라 지므로 최적의 데이터베이스 구성에는 이러한 모든 매개 변수를 지정할 수 있습니다.