[sisyphus] течёт psql?

Дмитрий Дегтярев ddv на bgc.perm.ru
Чт Апр 14 04:37:33 UTC 2011


Добрый день!

Есть задача залить данные из файла некоего формата в субд.

С помощью awk формирую строки вида
select myprocedure(param1, param2, ..., paramn);

процедура раскидывает данные по таблицам

всего строк 8-9 миллионов в день нужно загонять в базу.

Если делать так
$ awk '{print ....}' | psql -U user -d db -h host.local
то через пару минут psql уже занял 1,5 ГБ ОЗУ и пришлось прервать, т.к. 
всё залезло в своп.

если сформировать сначала файл(довольно быстро, 2-3 минуты), а потом 
psql -U user -d db -h host.local -f file.sql
то занимает в ОЗУ всего 6Кб. Работает так минут 15, а затем начинает всё 
свопиться, смотрю память psql опять занял 1,5 Гб. Опять останавливаю.

Утечка в psql? Или в либе какой?

Как залить дамп размером 3Гб в базу?

система последний sisyphus

ЗЫ:
сейчас заливаю так
$ awk '{print ....}' | while read l; do
     echo $l | psql -U user -d db -h host.local
done;
это не реально долго из-за 8000000 лишних запусков psql, реконнектов к 
базе...


Подробная информация о списке рассылки Sisyphus