Re: Connection.setReadOnly() - Mailing list pgsql-jdbc

From Tom Lane
Subject Re: Connection.setReadOnly()
Date
Msg-id 17892.1260545186@sss.pgh.pa.us
Whole thread Raw
In response to Re: Connection.setReadOnly()  (Craig Ringer <craig@postnewspapers.com.au>)
Responses Re: Connection.setReadOnly()
List pgsql-jdbc
Craig Ringer <craig@postnewspapers.com.au> writes:
> Does Pg have issues with long-running read-only transactions in
> read-committed mode? Or are they an exception to the usual "avoid
> long-running mostly-idle transactions" guideline?

> Pg doesn't have to worry about retaining old rows in vacuum with such a
> statement, because each new statement creates a new snapshot, so if it's
> idle it effectively has _no_ snapshot and vacuum is free to clear old
> rows. It doesn't need to keep track of anything to roll back, since the
> transaction is read only.

As of 8.4, I think the above statements are true.  In prior releases,
transactions just advertised the age of their first snapshot, so an
open transaction created an issue for VACUUM regardless of whether
it was serializable or not.  8.4 has more bookkeeping that allows a
transaction to report that it currently has no live snapshots.

            regards, tom lane

pgsql-jdbc by date:

Previous
From: "Albe Laurenz"
Date:
Subject: Re: Connection.setReadOnly()
Next
From: Craig Ringer
Date:
Subject: PATCH: Update LISTEN/NOTIFY documentation, PGConnection JavaDoc