diff options
Diffstat (limited to 'doc/src/sgml/mvcc.sgml')
-rw-r--r-- | doc/src/sgml/mvcc.sgml | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/doc/src/sgml/mvcc.sgml b/doc/src/sgml/mvcc.sgml index ba38d218a91..34a3ae5a0bf 100644 --- a/doc/src/sgml/mvcc.sgml +++ b/doc/src/sgml/mvcc.sgml @@ -535,6 +535,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 @@ -783,6 +797,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> @@ -1716,6 +1739,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"> |