-<!-- $PostgreSQL: pgsql/doc/src/sgml/high-availability.sgml,v 1.47 2010/02/19 00:15:25 momjian Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/high-availability.sgml,v 1.48 2010/02/20 10:07:27 sriggs Exp $ -->
<chapter id="high-availability">
<title>High Availability, Load Balancing, and Replication</title>
The data on the standby takes some time to arrive from the primary server
so there will be a measurable delay between primary and standby. Running the
same query nearly simultaneously on both primary and standby might therefore
- return differing results. Eventually, the standby will be
- consistent with the primary.
+ return differing results. We say that data on the standby is
+ <literal>eventually consistent</literal> with the primary.
Queries executed on the standby will be correct with regard to the transactions
that had been recovered at the start of the query, or start of first statement
in the case of serializable transactions. In comparison with the primary,
</listitem>
<listitem>
<para>
- <command>LOCK TABLE</> that explicitly requests a mode higher than <literal>ROW EXCLUSIVE MODE</>.
+ <command>LOCK</> that explicitly requests a mode higher than <literal>ROW EXCLUSIVE MODE</>.
</para>
</listitem>
<listitem>
<para>
- <command>LOCK TABLE</> in short default form, since it requests <literal>ACCESS EXCLUSIVE MODE</>.
+ <command>LOCK</> in short default form, since it requests <literal>ACCESS EXCLUSIVE MODE</>.
</para>
</listitem>
<listitem>
</listitem>
<listitem>
<para>
- Sequence update - <function>nextval()</>
+ Sequence updates - <function>nextval()</>, <function>setval()</>
</para>
</listitem>
<listitem>
subtle differences in behavior between read-only transactions
run on a standby and run during normal operation.
It is possible that <command>LISTEN</>, <command>UNLISTEN</>,
- <command>NOTIFY</>, and temporary tables might be allowed in a
- future release.
+ and temporary tables might be allowed in a future release.
</para>
<para>
Three-way deadlocks are possible between <literal>AccessExclusiveLocks</> arriving from
the primary, cleanup WAL records that require buffer cleanup locks, and
user requests that are waiting behind replayed <literal>AccessExclusiveLocks</>. Deadlocks
- are resolved by time-out when they exceed <varname>max_standby_delay</>.
+ are resolved immediately, should they occur, though they are thought to be
+ rare in practice.
</para>
<para>
</programlisting>
Consistency information is recorded once per checkpoint on the primary, as long
- as <varname>recovery_connections</> is enabled on the primary. If this parameter
- is disabled, it is not possible to enable recovery connections on the standby.
+ as <varname>recovery_connections</> is enabled on the primary. It is not possible
+ to enable recovery connections on the standby when reading WAL written during the
+ period that <varname>recovery_connections</> was disabled on the primary.
Reaching a consistent state can also be delayed in the presence
of both of these conditions: