Je suis nouveau à PG et en essayant d'exécuter cette requête simple et il se bloque Postgres. La requête fonctionne en quelques secondes si j'essaie seulement de calculer r1, mais dit "Out of memory" si j'essaie de calculer r2 à r6 en plus de r1 comme ci-dessous. Mauvaise conception de requête? Je vais référencer les champs calculés r1 ... r6 dans d'autres calculs, donc je pensais à faire de cette requête une vue. Mes paramètres de fichier de configuration clé sont ci-dessous. Windows 10, PG 9.6, 40 Go de RAM, 64 bits. Des idées sur ce qu'on peut faire? Merci! Édité: J'ai essayé d'ajouter LIMIT 500 à la fin et cela a fonctionné, mais si j'exécute une requête sur cette requête, c'est-à-dire pour utiliser le r1, r2, r3 ... calculé dans une autre requête, la nouvelle requête verra-t-elle? tous les records ou sera-t-il limité à seulement 500?PostgreSQL Config File et Query Design pour les calculs
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
Mes paramètres du fichier de configuration:
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
Peut-être apparenté? http://stackoverflow.com/questions/26478031/error-out-of-memory-on-machine-with-32gb-ram-and-without-swap-file – kennytm
Est-ce que 'public.psda' est définitivement une table, ou est -vous une vue? –
@DavidAldridge c'est définitivement une table. Je suis passé à un autre projet, mais je reviendrai bientôt à celui-ci. –