diff options
-rw-r--r-- | doc/src/sgml/biblio.sgml | 58 | ||||
-rw-r--r-- | doc/src/sgml/mvcc.sgml | 33 |
2 files changed, 91 insertions, 0 deletions
diff --git a/doc/src/sgml/biblio.sgml b/doc/src/sgml/biblio.sgml index 0da3a83faec..7cac1d22771 100644 --- a/doc/src/sgml/biblio.sgml +++ b/doc/src/sgml/biblio.sgml @@ -258,6 +258,64 @@ ssimkovi@ag.or.at <title>Proceedings and Articles</title> <para>This section is for articles and newsletters.</para> + <biblioentry id="ports12"> + <biblioset relation="article"> + <title><ulink url="https://arxiv.org/pdf/1208.4179">Serializable Snapshot Isolation in PostgreSQL</ulink></title> + <authorgroup> + <author> + <firstname>D.</firstname> + <surname>Ports</surname> + </author> + <author> + <firstname>K.</firstname> + <surname>Grittner</surname> + </author> + </authorgroup> + </biblioset> + <confgroup> + <conftitle>VLDB Conference</conftitle> + <confdates>August 2012</confdates> + <address>Istanbul, Turkey</address> + </confgroup> + </biblioentry> + + <biblioentry id="berenson95"> + <biblioset relation="article"> + <title><ulink url="https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/tr-95-51.pdf">A Critique of ANSI SQL Isolation Levels</ulink></title> + <authorgroup> + <author> + <firstname>H.</firstname> + <surname>Berenson</surname> + </author> + <author> + <firstname>P.</firstname> + <surname>Bernstein</surname> + </author> + <author> + <firstname>J.</firstname> + <surname>Gray</surname> + </author> + <author> + <firstname>J.</firstname> + <surname>Melton</surname> + </author> + <author> + <firstname>E.</firstname> + <surname>O'Neil</surname> + </author> + <author> + <firstname>P.</firstname> + <surname>O'Neil</surname> + </author> + </authorgroup> + </biblioset> + <confgroup> + <conftitle>ACM-SIGMOD Conference on Management of Data</conftitle> + <confdates>June 1995</confdates> + <address>San Jose, California</address> + </confgroup> + </biblioentry> + <biblioentry id="OLSON93"> <title>Partial indexing in POSTGRES: research project</title> <titleabbrev>Olson, 1993</titleabbrev> diff --git a/doc/src/sgml/mvcc.sgml b/doc/src/sgml/mvcc.sgml index ee47fb60382..2a7c1d01fcb 100644 --- a/doc/src/sgml/mvcc.sgml +++ b/doc/src/sgml/mvcc.sgml @@ -534,6 +534,20 @@ ERROR: could not serialize access due to concurrent update of explicit locks to block conflicting transactions. </para> + <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 + and performance may be observed when compared with systems that use a + traditional locking technique that reduces concurrency. Some other + systems may even offer Repeatable Read and Snapshot Isolation as distinct + isolation levels with different behavior. The permitted phenomena that + distinguish the two techniques were not formalized by database researchers + until after the SQL standard was developed, and are outside the scope of + this manual. For a full treatment, please see + <xref linkend="berenson95">. + </para> + <note> <para> Prior to <productname>PostgreSQL</productname> version 9.1, a request @@ -778,6 +792,15 @@ ERROR: could not serialize access due to read/write dependencies among transact </listitem> </itemizedlist> </para> + + <para> + The Serializable isolation level is implemented using a technique known + in academic database literature as Serializable Snapshot Isolation, which + builds on Snapshot Isolation by adding checks for serialization anomalies. + Some differences in behavior and performance may be observed when compared + with other systems that use a traditional locking technique. Please see + <xref linkend="ports12"> for detailed information. + </para> </sect2> </sect1> @@ -1709,6 +1732,16 @@ 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> + Internal access to the system catalogs is not done using the isolation + level of the current transaction. This means that newly created database + objects such as tables are visible to concurrent Repeatable Read and + Serializable transactions, even though the rows they contain are not. In + contrast, queries that explicitly examine the system catalogs don't see + rows representing concurrently created database objects, in the higher + isolation levels. + </para> </sect1> <sect1 id="locking-indexes"> |