Re: Potential G2-item cycles under serializable isolation
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Thomas Munro <thomas.munro@gmail.com>
Cc: Kyle Kingsbury <aphyr@jepsen.io>, 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:30:23Z
Lists: pgsql-bugs
Hi, On 2020-06-11 17:40:55 +1200, Thomas Munro wrote: > + <para> > + The Repeatable Read isolation level is implemented using a technique > + known in academic database literature and in some other database products > + as <firstterm>Snapshot Isolation</firstterm>. Differences in behavior > + may be observed when compared with systems using other implementation > + techniques. For a full treatment, please see > + <xref linkend="berenson95"/>. > + </para> Could it be worthwhile to narrow the "differences in behaviour" bit to read-write transactions? IME the biggest reason people explicitly use RR over RC is to avoid phantom reads in read-only transactions. Seems nicer to not force users to read an academic paper to figure that out? > @@ -1726,6 +1744,13 @@ SELECT pg_advisory_lock(q.id) FROM > see a transient state that is inconsistent with any serial execution > of the transactions on the master. > </para> > + > + <para> > + Access to the system catalogs is not done using the isolation level > + of the current transaction. This has the effect that newly created > + database objects such as tables become visible to concurrent Repeatable > + Read and Serializable transactions, even though their contents does not. > + </para> > </sect1> Should it be pointed out that that's about *internal* accesses to catalogs? This could be understood to apply to a SELECT * FROM pg_class; where it actually doesn't apply? 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