From: | Greg Stark <gsstark(at)mit(dot)edu> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: start of transaction (was: Re: [PERFORM] Help with count(*)) |
Date: | 2003-11-17 06:11:53 |
Message-ID: | 87he13a5hy.fsf@stark.dyndns.tv |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers pgsql-performance |
Neil Conway <neilc(at)samurai(dot)com> writes:
> What does BEGIN actually do now, from a user's perspective?
I think you're thinking about this all wrong. BEGIN doesn't "do" anything.
It's not a procedural statement, it's a declaration. It declares that the
block of statements form a transaction so reads should be consistent and
failures should be handled in a particular way to preserve data integrity.
Given that declaration and the guarantees it requires of the database it's
then up to the database to figure out what constraints that imposes on what
the database can do and still meet the guarantees the BEGIN declaration
requires. The more clever the database is about minimizing those restrictions
the better as it means the database can run more efficiently.
For what it's worth, this is how Oracle handles things too. On the
command-line issuing a BEGIN following a COMMIT is just noise; you're _always_
in a transaction. A COMMIT ends the previous the transaction and implicitly
starts the next transaction. But the snapshot isn't frozen until you first
read from a table.
I'm not sure what other databases do, but I think this is why clients behave
like this. They think of BEGIN as a declaration and therefore initiating a
COMMIT;BEGIN; at the end of every request is perfectly logical, and works fine
in at least Oracle, and probably other databases.
--
greg
From | Date | Subject | |
---|---|---|---|
Next Message | Stephan Szabo | 2003-11-17 07:09:05 | Re: start of transaction (was: Re: [PERFORM] Help with |
Previous Message | Bruce Momjian | 2003-11-17 05:46:34 | Re: [PATCHES] SRA Win32 sync() code |
From | Date | Subject | |
---|---|---|---|
Next Message | Stephan Szabo | 2003-11-17 07:09:05 | Re: start of transaction (was: Re: [PERFORM] Help with |
Previous Message | Bruce Momjian | 2003-11-17 00:31:13 | Re: start of transaction (was: Re: [PERFORM] Help with count(*)) |