Обсуждение: Long running transactions

Поиск
Список
Период
Сортировка

Long running transactions

От
Wayne Schroeder
Дата:
I have a quite heavily accessed database that is vacuumed nightly.
Attached to that database are processes, that at times, due to the way
they are coded, stay "idle in transaction" for long periods of time
(client lib implementation issues a BEGIN).  I've been reading up on
XIDs and the like and I'm trying to determine if this is going to cause
problems.

The reason I ask is one of these processes blocked a slony replication
set from doing it's initial copy with a warning about an old transaction
id.  It made me wonder if long running transactions could some how hurt
things in other areas.  Obviously the slony copy is not an issue for the
postgres list -- I am more interested in the effects of long running
transactions in general.

Wayne

Re: Long running transactions

От
Tom Lane
Дата:
Wayne Schroeder <raz@positivenetworks.net> writes:
> I have a quite heavily accessed database that is vacuumed nightly.
> Attached to that database are processes, that at times, due to the way
> they are coded, stay "idle in transaction" for long periods of time
> (client lib implementation issues a BEGIN).  I've been reading up on
> XIDs and the like and I'm trying to determine if this is going to cause
> problems.

Yup, it is; you should try to fix those apps to not send BEGIN until
they are ready to do some work.  Idle-in-transaction processes will tend
to prevent VACUUM from removing dead rows, for instance, because it
can't be sure that those processes shouldn't be able to see recently-dead
rows.

            regards, tom lane