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
Re: Serializable Isolation without blocking |
Список | 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 по дате отправления: