2017-04-13 6 views
0

私はPGを初めて使い、この単純なクエリを実行しようとしており、Postgresがクラッシュしています。私はr1を計算しようとすると数秒で動作しますが、以下のようにr1からr6までr6を計算しようとすると "メモリ不足"と表示されます。クエリの設計が貧弱ですか?他の計算では計算フィールド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/

カルクtotal RAM for PostgreSQL = total RAM - PostgreSQLのRAM for OS

PGTuneの計算構成のための最高のパフォーマンスに基づいて、与えられたハードウェア構成。

PostgreSQLの最適化設定ではありません。

多くの設定は、ハードウェア構成だけでなく、データベースのサイズ、クライアント数、およびクエリの複雑さによっても異なるため、データベースを最適に構成するにはこれらのすべてのパラメータを指定する必要があります。

関連する問題