problème de mémoire avec psql

From: François Bouhet <francois(dot)bouhet(at)eurofidai(dot)org>
To: pgsql-fr-generale <pgsql-fr-generale(at)postgresql(dot)org>
Subject: problème de mémoire avec psql
Date: 2015-01-27 14:51:50
Message-ID: 54C7A606.2080206@eurofidai.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Bonjour la liste,

Je vous soumets un problème que je n'ai pas résolu depuis longtemps,
mais que j'arrivais à contourner. J'aimerais avoir vos points de vue et
vos idées pour de nouvelles approches.

Le problème est simple, j'ai une table qui contient entre 30 et 50
millions de lignes. Je voudrais "simplement" écrire dans un fichier de
sortie csv le contenu de la table. Le fichier attendu est de l'ordre de
10Go. J'ai 25 tables similaires à copier dans des fichiers csv, pour
huit d'entre elles, la requête échoue.

Avec psql, la redirection de la sortie standard ou l'option de fichier
de sortie ne fonctionnent pas :

echo "SELECT * FROM temp_jrc_order_201206 ; " | psql -h noirdesir -A -U
postgres -F \; -d mabase > order_201206.csv

echo "SELECT * FROM temp_jrc_order_201206 ; " | psql -h noirdesir -A -U
postgres -F \; -d mabase -o order_201206.csv

Voici ce que contient /var/log/syslog du client :
Out of memory: Kill process 22870 (psql) score 861 or sacrifice child

Voici ce que contient /var/log/postgresql/postgresql-9.3-main.log serveur :
postgres 192.168.47.175 mabase 2015-01-27 14:18:57 CET 54c78f6f.344d
LOG: n'a pas pu envoyer les données au client : Connexion
ré-initialisée par le correspondant
postgres 192.168.47.175 mabase 2015-01-27 14:18:57 CET 54c78f6f.344d
INSTRUCTION : SELECT * FROM temp_jrc_order_201103 ;
postgres 192.168.47.175 mabase 2015-01-27 14:18:57 CET 54c78f6f.344d
FATAL: connexion au client perdue

Dans un premier temps, j'exécutais les requêtes sur le serveur, pour le
soulager, je les lance d'une autre machine.
Le serveur a 24Go de RAM, le client 10Go (avec shmmax à 5Go).
Ce sont des machines virtuelles, je pourrais leur ajouter de la mémoire,
mais cela ne résoudra pas éternellement mon problème.

Avez-vous des idées ? Y aurait-il une option masquée de psql pour "se
vider temporairement sur le disque" ? Y a t-il d'autres approches ?

Merci pour vos retours, ils seront les bienvenus.

Bien cordialement
François Bouhet
--
Administrateur des systèmes d'information
téléphone: +33 (0)4 76 63 53 89
Adresse postale:
CNRS / EUROFIDAI UPS 3390
150, rue de la Chimie BP 47
38040 GRENOBLE Cedex 9 France

--
Envoi via la liste pgsql-fr-generale (pgsql-fr-generale(at)postgresql(dot)org)

Responses

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Dimitri Fontaine 2015-01-27 15:58:21 Re: problème de mémoire avec psql
Previous Message Virginie Jourdan 2015-01-20 13:55:45 Nouvelle version 1.2.1 de POWA !