Commit 2b7cef5f authored by Bruce Momjian's avatar Bruce Momjian

Improve broadcast wording for failover/clustering documentation.

parent 9497454c
<!-- $PostgreSQL: pgsql/doc/src/sgml/failover.sgml,v 1.5 2006/11/14 22:25:15 momjian Exp $ --> <!-- $PostgreSQL: pgsql/doc/src/sgml/failover.sgml,v 1.6 2006/11/15 01:09:08 momjian Exp $ -->
<chapter id="failover"> <chapter id="failover">
<title>Failover, Replication, Load Balancing, and Clustering Options</title> <title>Failover, Replication, Load Balancing, and Clustering Options</title>
...@@ -149,23 +149,25 @@ ...@@ -149,23 +149,25 @@
<title>Query Broadcast Load Balancing</title> <title>Query Broadcast Load Balancing</title>
<para> <para>
Query broadcast load balancing is accomplished by having a program Query broadcast load balancing is accomplished by having a
intercept every query and send it to all servers. Read-only queries can program intercept every SQL query and send it to all servers.
be sent to a single server because there is no need for all servers to This is unique because most replication solutions have the write
process it. This is unusual because most replication solutions have server propagate its changes to the other servers. With query
each write server propagate its changes to the other servers. With broadcasting, each server operates independently. Read-only
query broadcasting, each server operates independently. queries can be sent to a single server because there is no need
for all servers to process it.
</para> </para>
<para> <para>
Because each server operates independently, functions like One limitation of this solution is that functions like
<function>random()</>, <function>CURRENT_TIMESTAMP</>, and <function>random()</>, <function>CURRENT_TIMESTAMP</>, and
sequences can have different values on different servers. If sequences can have different values on different servers. This
this is unacceptable, applications must query such values from is because each server operates independently, and because SQL
a single server and then use those values in write queries. queries are broadcast (and not actual modified rows). If this
Also, care must also be taken that all transactions either commit is unacceptable, applications must query such values from a
or abort on all servers Pgpool is an example of this type of single server and then use those values in write queries. Also,
replication. care must be taken that all transactions either commit or abort
on all servers Pgpool is an example of this type of replication.
</para> </para>
</sect1> </sect1>
...@@ -173,14 +175,14 @@ ...@@ -173,14 +175,14 @@
<title>Clustering For Load Balancing</title> <title>Clustering For Load Balancing</title>
<para> <para>
In clustering, each server can accept write requests, and these In clustering, each server can accept write requests, and modified
write requests are broadcast from the original server to all data is transmitted from the original server to every other
other servers before each transaction commits. Heavy write server before each transaction commits. Heavy write activity
activity can cause excessive locking, leading to poor performance. can cause excessive locking, leading to poor performance. In
In fact, write performance is often worse than that of a single fact, write performance is often worse than that of a single
server. Read requests can be sent to any server. Clustering server. Read requests can be sent to any server. Clustering
is best for mostly read workloads, though its big advantage is is best for mostly read workloads, though its big advantage is
that any server can accept write requests --- there is no need that any server can accept write requests &mdash; there is no need
to partition workloads between read/write and read-only servers. to partition workloads between read/write and read-only servers.
</para> </para>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment