Re: 9.2beta1, parallel queries, ReleasePredicateLocks, CheckForSerializableConflictIn in the oprofile

Поиск
Список
Период
Сортировка
От Merlin Moncure
Тема Re: 9.2beta1, parallel queries, ReleasePredicateLocks, CheckForSerializableConflictIn in the oprofile
Дата
Msg-id CAHyXU0yqC+q5GcL6ZFLjTujbFLgMmgsBVZChJAEaVEE7qFb_mA@mail.gmail.com
обсуждение исходный текст
Ответ на Re: 9.2beta1, parallel queries, ReleasePredicateLocks, CheckForSerializableConflictIn in the oprofile  (Stephen Frost <sfrost@snowman.net>)
Ответы Re: 9.2beta1, parallel queries, ReleasePredicateLocks, CheckForSerializableConflictIn in the oprofile  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
On Fri, May 25, 2012 at 11:17 AM, Stephen Frost <sfrost@snowman.net> wrote:
> * Merlin Moncure (mmoncure@gmail.com) wrote:
>> Right -- duh.  Well, hm.  Is this worth fixing?  ISTM there's a bit of
>> 'optimizing for pgbench-itis' in the buffer partitions -- they seem
>> optimized to lever the mostly random access behavior of pgbench.  But
>> how likely is it to see multiple simultaneous scans in the real world?
>>  Interleaving scans like that is not a very effective optimization --
>> if it was me, it'd be trying to organize something around a
>> partitioned tid scan for parallel sequential access.
>
> Didn't we implement a system whereby this is exactly what we intend to
> happen on the read side- that is, everyone doing a SeqScan gangs up on
> one ring buffer and follows it, which we felt was going to dramatically
> improve performance in some cases?

yeah:
/* * If the table is large relative to NBuffers, use a bulk-read access * strategy and enable synchronized scanning
(seesyncscan.c).    Although * the thresholds for these features could be different, we make them the * same so that
thereare only two behaviors to tune rather than four. * (However, some callers need to be able to disable one or both
ofthese * behaviors, independently of the size of the table; also there is a GUC * variable that can disable
synchronizedscanning.) * * During a rescan, don't make a new strategy object if we don't have to. */if
(!RelationUsesLocalBuffers(scan->rs_rd)&&    scan->rs_nblocks > NBuffers / 4){    allow_strat = scan->rs_allow_strat;
allow_sync = scan->rs_allow_sync;}else    allow_strat = allow_sync = false; 
if (allow_strat){    if (scan->rs_strategy == NULL)        scan->rs_strategy = GetAccessStrategy(BAS_BULKREAD);}


I wonder if the logic here is just being too strict...

merlin


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

Предыдущее
От: Jeff Janes
Дата:
Сообщение: Re: 9.2beta1, parallel queries, ReleasePredicateLocks, CheckForSerializableConflictIn in the oprofile
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Interrupting long external library calls