[sisyphus] течёт psql?
Дмитрий Дегтярев
ddv на bgc.perm.ru
Чт Апр 14 05:44:41 UTC 2011
14.04.2011 11:01, REAL пишет:
> 14.04.2011 11:50, Дмитрий Дегтярев пишет:
>> В Postgres Хранимые процедуры транзакционны поэтому каждая строка есть
>> отдельная транзакция.
>
> Насколько я помню, это зависит от параметров соединения. По крайней
> мере, так в Oracle и DB2, так, по идее, вообще по стандарту, если не
> ошибаюсь. Если параметр autocommit установлен в false, то все
> процедуры идут одной транзакцией вплоть до commit, rollback или
> закрытия соединения.
>
все это влияет на работу сервера, а не клиента. проблема в клиенте.
>>> А нельзя ли сделать без реконнектов, т.е. один коннект, а транзакций
>>> много? Я в psql ни в зуб ногой, но вообще-то нормальные СУБД обязаны
>>> уметь такое.
>>>
>> Так и делаю, но почему то съедает память.
>
> Вот от этого и мои подозрения, что отключен autocommit. Или, как
> вариант, можно перед каждым инсертом поиграться со времем ожидания
> (должно быть что-то вроде аналога sleep в shell).
>
psql разбивает команды по ";" и отправляет по одной на сервер в случае
если сервер готов принять очередную..я не думаю что psql будет брать с
диска данные и ложить в память если сервер не принимает команды, т.к. не
выполнил ещё предыдущую.
Подробная информация о списке рассылки Sisyphus