[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