Re: [RFC] GSoC Work on readonly queries done so far

Поиск
Список
Период
Сортировка
От Florian G. Pflug
Тема Re: [RFC] GSoC Work on readonly queries done so far
Дата
Msg-id 4666EE20.1030106@phlo.org
обсуждение исходный текст
Ответ на Re: [RFC] GSoC Work on readonly queries done so far  (Jeff Davis <pgsql@j-davis.com>)
Ответы Re: [RFC] GSoC Work on readonly queries done so far  (Jeff Davis <pgsql@j-davis.com>)
Re: [RFC] GSoC Work on readonly queries done so far  (Heikki Linnakangas <heikki@enterprisedb.com>)
Список pgsql-hackers
Jeff Davis wrote:
> On Wed, 2007-06-06 at 16:11 +0200, Florian G. Pflug wrote:
>>    .) Since the slaves needs to track an Snapshot in shared memory, it cannot
>>       resize that snapshot to accomodate however many concurrent transactions
>>       might have been running on the master. My current plan is to detect if
>>       that global snapshot overflows, and to lock out readonly queries on the
>>       slave (and therefore remove the need of keeping the snapshot current)
>>       until the number of active xids on the master has dropped below
>>       max_connections on the slave. A warning will be written to the postgres
>>       log that suggest that the DBA increases the max_connections value on
>>       the slave.
>>
> If we did lock the slave while waiting for transactions to complete on
> the master, we'd need to document some stronger warnings against idle
> transactions so that administrators could notice and correct the
> problem.

It's not exactly locking until it complete on the master, it's locking
the slave until we reach a position in the wal on the slave with less
than max_connections concurrent transactions. But yes, I agree, this
will need to be documented.

> Are you referring to the size of the xip array being a problem? Would it
> help to tie the size of the xip array to max_connections? I understand
> that max_connections might be greater on the master, but maybe something
> similar? 

Thats what I currently do - the xip array on the slave is sized to
hold max_connections entries (Actually, it's max_connections +
max_prepared_xacts I think). The problem occurs exactly if those
values are set too small on the slave - and since shared mem
objects are not resizeable, I don't see how the slave can handle
an xip overflow gracefully other than by not publishing the
information in shared memory as long as it doesn't fit there.

On a further thinking - maybe locking out transactions isn't even
necessary - they would just continue to see the old global snapshot,
so time wouldn't advance for them until the number of concurrent
transactions decreases again.

greetings, Florian Pflug


В списке pgsql-hackers по дате отправления:

Предыдущее
От: "Florian G. Pflug"
Дата:
Сообщение: Re: [RFC] GSoC Work on readonly queries done so far
Следующее
От: Joe Conway
Дата:
Сообщение: Re: Implicit casts with generic arrays