[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