Re: Row-level Locks & SERIALIZABLE transactions, postgres vs. Oracle - Mailing list pgsql-hackers

From Florian Pflug
Subject Re: Row-level Locks & SERIALIZABLE transactions, postgres vs. Oracle
Date
Msg-id 4EC378F6-72C2-4DB9-A37C-947C3D4848DB@phlo.org
Whole thread Raw
List pgsql-hackers
On May 14, 2010, at 16:32 , Kevin Grittner wrote:

> Florian Pflug <fgp@phlo.org> wrote:
>
>> I must admit that I wasn't able to find an explicit reference to
>> Oracle's behavior in their docs, so I had to resort to
>> experiments. They do have examples showing how to do FK-like
>> constraints with triggers, and those don't contain any warning
>> whatsoever about problems in SERIALIZABLE mode, though.  But
>> still, if there is word on this from Oracle somewhere, I'd love to
>> hear about it.
>
> I suspect that in trying to emulate Oracle on this, you may run into
> an issue which posed challenges for the SSI implementation which
> didn't come up in the Cahill prototype implementations: Oracle, and
> all other MVCC databases I've read about outside of PostgreSQL, use
> an "update in place with a rollback log" technique.  Access to any
> version of a given row or index entry goes through a single
> location, with possible backtracking through the log after that,
> which simplifies management of certain concurrency issues.  Do they
> perhaps use an in-RAM lock table, pointing to the "base" location of
> the row for these SELECT FOR UPDATE locks?  (Just guessing; I've
> never used Oracle, myself.)

Thanks for the heads up. I think my proposed doges this, though, since UPDATE as well as FOR SHARE and FOR UPDATE
alreadyfollow the ctid chain to find the most recent tuple and fail with a serialization error (within >= REPEATABLE
READtransaction) should this tuple be inaccessible to the transaction's snapshot. 

Btw, I've just posted a quick-and-dirty patch that implements the parts of my proposal that deal with FOR UPDATE vs.
UPDATEconflicts in response to Robert Haas' mail on this thread, just in case you're interested. 

best regards,
Florian Pflug



pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: pg_upgrade and extra_float_digits
Next
From: Robert Haas
Date:
Subject: Re: Stefan's bug (was: max_standby_delay considered harmful)