[pgpool-hackers: 144] Re: Do we need to rephrase the precondition for load-balancing?

Tatsuo Ishii ishii at postgresql.org
Fri Oct 26 21:01:00 JST 2012


> On Fri, Oct 26, 2012 at 6:00 AM, Tatsuo Ishii <ishii at postgresql.org> wrote:
> 
>> Sorry for late reply.
>>
>> > Hi,
>> >
>> >     The docs [1] say that one of the preconditions for load-balancing is
>> > that
>> >
>> >     > The query must not be in an explicitly declared transaction (i.e.
>> not
>> > in a BEGIN ~ END block)
>>
>> Yeah, the doc is outdated in this regard.
>>
>> >     But I see that this is not a strict statement. I extracted a specific
>> > backend process' log lines (generated using log_per_node_statement), and
>> I
>> > could see that on line 6, the SELECT query was load-balanced to a replica
>> > (node id 2) and the next INSERT statement was correctly sent to the
>> master.
>> > But any SELECT after that INSERT was not sent to the replica, and only to
>> > the master.
>> >
>> >     So can we say that load balancing _does_ occur in an explicitly
>> > declared transaction, but as soon as a DML operation is perfored, any
>> > subsequent SELECT queries will be sent only to master.
>>
>> Yes, that is expected behavior if you are using streaming replication
>> mode. The reason why SELECTs are sent to master after DML issued is,
>> standby cannot see the modified rows.
>>
> 
> Can we expect doc changes, or I should probably file a bug-report against
> documentation so that it gets taken care of in due process.

I will propose doc changes.
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese: http://www.sraoss.co.jp


More information about the pgpool-hackers mailing list