Re: Potential G2-item cycles under serializable isolation
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Kyle Kingsbury <aphyr@jepsen.io>
Cc: Thomas Munro <thomas.munro@gmail.com>, Peter Geoghegan <pg@bowt.ie>, Kevin Grittner <kgrittn@gmail.com>, Jeff Davis <pgsql@j-davis.com>, PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2020-06-11T19:54:36Z
Lists: pgsql-bugs
Hi, On 2020-06-11 08:39:13 -0400, Kyle Kingsbury wrote: > On 6/11/20 1:40 AM, Thomas Munro wrote: > > What do you think about this documentation update? > > I think this is really helpful! You can go a little further if you like. > Right now, SSI vs serializable and SI vs RR are both described as > "differences in behavior", which kinda leaves it unclear as to how those > levels are related. If you want to follow Berenson, Adya, et al.'s broad > interpretation, I'd say something like > > "Snapshot isolation prevents some anomalies, like phantoms, which repeatable > read allows. It also allows some anomalies, like G2-item (write skew), which > repeatable read prevents." I think the percentage of readers that understand "G2-item" or even "write skew", but don't already know what snapshot isolation implies, is pretty close to zero. I like the idea of having a bit more detail, but I think it'd have to be worded differently to be beneficial. I'd also phrase it as "some definitions of repeatable read", but ... :). Intuitively, and that's not meant as an argument for anything, I find prohibiting write skew in something named "repeatable read" just plain odd. Leaving naming aside, I think there's good practical reasons for applications using read-committed, snapshot isolation, and serializable. It's not obvious to me that there are cases where the Berenson definition of RR is something that's desirable to use over RR/SI/S. I suspect what we really want, medium term, is some guidelines around what isolation levels are appropriate for which use-case. But that's a nontrivial thing to write, I think, and there's lot of room for disagreements... Greetings, Andres Freund
Commits
-
Doc: Add references for SI and SSI.
- 4c897197d793 9.5.23 landed
- 7295ac9c6c71 9.6.19 landed
- e2aca0d02d97 10.14 landed
- 648e56d3984d 11.9 landed
- eb1286413c0a 12.4 landed
- 4701efa9f741 13.0 landed
- 1575fbf1ac3c 14.0 landed
-
Improve comments for [Heap]CheckForSerializableConflictOut().
- 44eff2841059 13.0 landed
- 7aa4fb592530 14.0 landed
-
Avoid update conflict out serialization anomalies.
- 5940ffb22131 14.0 landed
- 6df7105e5d50 13.0 landed
- e620a38c23b9 12.4 landed
- dd616f2ec1c5 11.9 landed
- 19a6e1bc3083 10.14 landed
- e81dc2b7e2c4 9.6.19 landed
- c05f6b354ffe 9.5.23 landed
-
Implement genuine serializable isolation level.
- dafaa3efb75c 9.1.0 cited