On Wednesday, January 19, 2011 07:06:58 PM Chris Browne wrote: > Kevin.Grittner@xxxxxxxxxxxx ("Kevin Grittner") writes: > > Filip Rembia*kowski<plk.zuber@xxxxxxxxx> wrote: > >> 2011/1/19 Charles.Hou <givemeegn@xxxxxxxxx>: > >>> " select * from mybook" SQL command also increase the XID ? > >> > >> Yes. Single SELECT is a transaction. Hence, it needs a transaction > >> ID. > > > > No, not in recent versions of PostgreSQL. There's virtual > > transaction ID, too; which is all that's needed unless the > > transaction writes something. > > > > Also, as a fine point, if you use explicit database transactions > > (with BEGIN or START TRANSACTION) then you normally get one XID for > > the entire transaction, unless you use SAVEPOINTs. > > Erm, "not *necessarily* in recent versions of PostgreSQL." > > A read-only transaction won't consume XIDs, but if you don't expressly > declare it read-only, they're still liable to get eaten... No. The Xid is generally only allocated at the first place a real xid is needed. See GetCurrentTransactionId, AssignTransactionId in xact.c and the caller of the former. Andres -- Sent via pgsql-performance mailing list (pgsql-performance@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-performance