On Mon, Mar 16, 2015 at 11:46 AM, Robert Haas <robertmh...@gmail.com> wrote:
> On Sun, Mar 15, 2015 at 8:04 PM, Rui DeSousa <r...@crazybean.net> wrote: > > Would a parameter to auto terminate long running transactions be a > better solution? Terminating the long running transaction would allow for > the normal vacuuming process to cleanup the deleted records thus avoiding > database bloat without introducing new semantics to Postgres's MVCC. I > would also recommend that the default be disabled. > > An advantage of Kevin's approach is that you don't have to abort *all* > long-running transactions, only those that touch data which has been > modified since then. If your system is read-mostly, that could > dramatically reduce the number of aborts. > > Indeed. The suggestion of auto-terminating long running transactions misses the point, ISTM. Most of the use cases I can see for this involve vacuuming tables that the long running transaction will have no interest in at all (which is why I suggested being able to set it on a per table basis). I certainly don't want to be terminating my long running report transaction so that my queue table which is only ever touched by very short-lived transactions can be reasonably vacuumed. But that's what we have to do now. cheers andrew