Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Re: Serializable Isolation without blocking - Mailing list pgsql-hackers

From Greg Stark
Subject Re: Serializable Isolation without blocking
Date
Msg-id 407d949e1001071140w26ff7d0dt4fa67b5b7ca77958@mail.gmail.com
Whole thread Raw
In response to Re: Serializable Isolation without blocking  (Markus Wanner <markus@bluegap.ch>)
Responses Re: Serializable Isolation without blocking
Re: Serializable Isolation without blocking
List pgsql-hackers
On Thu, Jan 7, 2010 at 11:08 AM, Markus Wanner <markus@bluegap.ch> wrote:
> Row level locks are very fine grained, but those are spilled to disk in
> its current implementation. So those are an even worse fit for the needs
> of SIREAD.
>

I think we're still talking past the issue. Predicate locks are not
row level, nor page level, nor table level. They're locks on
predicates. Ie, you have to lock against values which aren't actually
currently in the table at all. You need to be able to detect a
conflict between a transaction which read rows "WHERE i BETWEEN 1 AND
10" and one which tries to insert a row with i=1 even if the first
transaction didn't see any rows with i=1 (or indeed even if the first
transaction found no rows at all).

That's the hard part. How do you represent such a lock in a way that I
can efficiently find it and check for the conflict when it comes time
for me to do my insert.

And how do you do that without tying the implementation to specific
details of how our planner, table scans, and index access methods
work?

-- 
greg


pgsql-hackers by date:

Previous
From: "Kevin Grittner"
Date:
Subject: Re: true serializability and predicate locking
Next
From: Tom Lane
Date:
Subject: Re: Hot Standy introduced problem with query cancel behavior