[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