doc: add mention of ssi read anomolies to mvcc docs

From Jeff Davis, modified by Kevin Grittner
This commit is contained in:
Bruce Momjian 2013-01-24 21:44:54 -05:00
parent 9971f6f517
commit 56a6317bf5

View File

@ -515,8 +515,9 @@ ERROR: could not serialize access due to concurrent update
</indexterm>
<para>
The <firstterm>Serializable</firstterm> isolation level provides the strictest transaction
isolation. This level emulates serial transaction execution,
The <firstterm>Serializable</firstterm> isolation level provides
the strictest transaction isolation. This level emulates serial
transaction execution for all committed transactions;
as if transactions had been executed one after another, serially,
rather than concurrently. However, like the Repeatable Read level,
applications using this level must
@ -571,6 +572,20 @@ ERROR: could not serialize access due to read/write dependencies among transact
computed by A.
</para>
<para>
When relying on Serializable transactions to prevent anomalies, it is
important that any data read from a permanent user table not be
considered valid until the transaction which read it has successfully
committed. This is true even for read-only transactions, except that
data read within a <firstterm>deferrable</firstterm> read-only
transaction is known to be valid as soon as it is read, because such a
transaction waits until it can acquire a snapshot guaranteed to be free
from such problems before starting to read any data. In all other cases
applications must not depend on results read during a transaction that
later aborted; instead, they should retry the transaction until it
succeeds.
</para>
<para>
To guarantee true serializability <productname>PostgreSQL</productname>
uses <firstterm>predicate locking</>, which means that it keeps locks