Re: Serializable Isolation without blocking

Поиск
Список
Период
Сортировка
От Greg Stark
Тема Re: Serializable Isolation without blocking
Дата
Msg-id 407d949e1001071140w26ff7d0dt4fa67b5b7ca77958@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Serializable Isolation without blocking  (Markus Wanner <markus@bluegap.ch>)
Ответы Re: Serializable Isolation without blocking  (Robert Haas <robertmhaas@gmail.com>)
Re: Serializable Isolation without blocking  (Markus Wanner <markus@bluegap.ch>)
Список 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 по дате отправления:

Предыдущее
От: "Kevin Grittner"
Дата:
Сообщение: Re: true serializability and predicate locking
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Hot Standy introduced problem with query cancel behavior