Received: from localhost (mx1.hub.org [200.46.208.251]) by postgresql.org (Postfix) with ESMTP id B72DF9F9BFA for ; Tue, 14 Nov 2006 21:11:07 -0400 (AST) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.208.251]) (amavisd-new, port 10024) with ESMTP id 90937-05 for ; Tue, 14 Nov 2006 21:10:38 -0400 (AST) X-Greylist: from auto-whitelisted by SQLgrey- Received: from momjian.us (momjian.us [70.90.9.53]) by postgresql.org (Postfix) with ESMTP id 113CD9FA231 for ; Tue, 14 Nov 2006 21:10:36 -0400 (AST) Received: (from bruce@localhost) by momjian.us (8.11.6/8.11.6) id kAF1ASa11108; Tue, 14 Nov 2006 20:10:28 -0500 (EST) From: Bruce Momjian Message-Id: <200611150110.kAF1ASa11108@momjian.us> Subject: Re: [HACKERS] Replication documentation addition In-Reply-To: To: Jeff Frost Date: Tue, 14 Nov 2006 20:10:28 -0500 (EST) CC: Chris Browne , pgsql-docs@postgresql.org X-Mailer: ELM [version 2.4ME+ PL123] MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="ELM1163553028-23851-0_" Content-Transfer-Encoding: 7bit X-Virus-Scanned: Maia Mailguard 1.0.1 X-Archive-Number: 200611/23 X-Sequence-Number: 3857 --ELM1163553028-23851-0_ Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="US-ASCII" Jeff Frost wrote: > On Tue, 14 Nov 2006, Bruce Momjian wrote: > > >> "In clustering, each server can accept write requests, and these write > >> requests are broadcast from the original server to all other servers before > >> each transaction commits." > >> > >> Unfortunately, I can't seem to come up with anything more clever. > > > > Basically, when you are broadcasting outside the server, you are > > broadcasting SQL queries, and those queries do not have information > > about non-deterministic functions and have issues with universal commits > > on all node. > > Ahh..I like this explanation, because the inter-server communication in > clustering is not necessarily SQL queries. OK, I have updated the documentation with the attached patch, which clarifies SQL broadcast vs. modified row propogation. Current version is at: http://momjian.us/main/writings/pgsql/sgml/failover.html -- Bruce Momjian bruce@momjian.us EnterpriseDB http://www.enterprisedb.com + If your life is a hard drive, Christ can be your backup. + --ELM1163553028-23851-0_ Content-Transfer-Encoding: 7bit Content-Type: text/x-diff Content-Disposition: inline; filename="/bjm/diff" Index: doc/src/sgml/failover.sgml =================================================================== RCS file: /cvsroot/pgsql/doc/src/sgml/failover.sgml,v retrieving revision 1.5 diff -c -c -r1.5 failover.sgml *** doc/src/sgml/failover.sgml 14 Nov 2006 22:25:15 -0000 1.5 --- doc/src/sgml/failover.sgml 15 Nov 2006 01:06:42 -0000 *************** *** 149,171 **** Query Broadcast Load Balancing ! Query broadcast load balancing is accomplished by having a program ! intercept every query and send it to all servers. Read-only queries can ! be sent to a single server because there is no need for all servers to ! process it. This is unusual because most replication solutions have ! each write server propagate its changes to the other servers. With ! query broadcasting, each server operates independently. ! Because each server operates independently, functions like random(), CURRENT_TIMESTAMP, and ! sequences can have different values on different servers. If ! this is unacceptable, applications must query such values from ! a single server and then use those values in write queries. ! Also, care must also be taken that all transactions either commit ! or abort on all servers Pgpool is an example of this type of ! replication. --- 149,173 ---- Query Broadcast Load Balancing ! Query broadcast load balancing is accomplished by having a ! program intercept every SQL query and send it to all servers. ! This is unique because most replication solutions have the write ! server propagate its changes to the other servers. With query ! broadcasting, each server operates independently. Read-only ! queries can be sent to a single server because there is no need ! for all servers to process it. ! One limitation of this solution is that functions like random(), CURRENT_TIMESTAMP, and ! sequences can have different values on different servers. This ! is because each server operates independently, and because SQL ! queries are broadcast (and not actual modified rows). If this ! is unacceptable, applications must query such values from a ! single server and then use those values in write queries. Also, ! care must be taken that all transactions either commit or abort ! on all servers Pgpool is an example of this type of replication. *************** *** 173,186 **** Clustering For Load Balancing ! In clustering, each server can accept write requests, and these ! write requests are broadcast from the original server to all ! other servers before each transaction commits. Heavy write ! activity can cause excessive locking, leading to poor performance. ! In fact, write performance is often worse than that of a single server. Read requests can be sent to any server. Clustering is best for mostly read workloads, though its big advantage is ! that any server can accept write requests --- there is no need to partition workloads between read/write and read-only servers. --- 175,188 ---- Clustering For Load Balancing ! In clustering, each server can accept write requests, and modified ! data is transmitted from the original server to every other ! server before each transaction commits. Heavy write activity ! can cause excessive locking, leading to poor performance. In ! fact, write performance is often worse than that of a single server. Read requests can be sent to any server. Clustering is best for mostly read workloads, though its big advantage is ! that any server can accept write requests — there is no need to partition workloads between read/write and read-only servers. --ELM1163553028-23851-0_--