Re: start of transaction (was: Re: [PERFORM] Help with count(*))
Neil Conway <neilc@samurai.com>
From: Neil Conway <neilc@samurai.com>
To: Hannu Krosing <hannu@tm.ee>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Will LaShell <will@lashell.net>, Christopher Browne <cbbrowne@acm.org>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2003-11-16T22:55:41Z
Lists: pgsql-hackers, pgsql-performance
Hannu Krosing <hannu@tm.ee> writes: > For me, the "start of transaction" is not about time, but about grouping > a set of statements into one. So making the exact moment of "start" be > the first statement that actually does something with data seems > perfectly reasonable. This might be a perfectly logical change in semantics, but what benefit does it provide over the old way of doing things? What does BEGIN actually do now, from a user's perspective? At present, it "starts a transaction block", which is pretty simple. If we adopted the proposed change, it would "change the state of the system so that the next command is part of a new transaction". This is naturally more complex; but more importantly, what benefit does it ACTUALLY provide to the user? (I can't see one, but perhaps I'm missing something...) > Delaying the locking effects of transactions as long as possible can > increase performance overall, not just for pathological clients that sit > on idle open transactions. I agree, but this is irrelevant to the semantics of now(). -Neil