| From: | "Kevin Grittner" <Kevin(dot)Grittner(at)wicourts(dot)gov> |
|---|---|
| To: | <robertmhaas(at)gmail(dot)com>,<laurenz(dot)albe(at)wien(dot)gv(dot)at> |
| Cc: | <nicolas(dot)barbier(at)gmail(dot)com>,<gsstark(at)mit(dot)edu>, <pgsql-hackers(at)postgresql(dot)org> |
| Subject: | Re: Serializable Isolation without blocking |
| Date: | 2010-01-01 20:12:54 |
| Message-ID: | 4B3E02E6020000250002DC40@gw.wicourts.gov |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
"Albe Laurenz" wrote:
> If I remember right, one necessity for the SIREAD lock technique
> was that SIREAD locks taken by a transaction have to be kept after
> the transaction has ended.
Correct. An SIREAD lock must be held until completion of the last
serializable transaction holding a snapshot earlier than the lock
transaction's commit.
Exceptions to that are:
- If a serializable transaction is rolled back, all SIREAD locks can
be immediately released.
- If an an ACCESS EXCLUSIVE lock is acquired on the exact same object
already locked by an SIREAD lock, the SIREAD lock can be released.
(This is an optimization, not a requirement for correctness.)
> Won't that require fundamental changes?
We already have two different lock methods, one of which already
keeps locks past the end of a database transaction. USER locks
persist until the session terminates or the lock is explicitly
released. Given that, I don't think it would be fair to characterize
a third lock method with a third lifespan as a fundamental change --
just another implementation detail.
-Kevin
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Kris Jurka | 2010-01-01 20:31:58 | Re: Cancelling idle in transaction state |
| Previous Message | Magnus Hagander | 2010-01-01 19:55:42 | Re: win32 socket definition |