Re: Avoiding unnecessary reads in recovery

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: Avoiding unnecessary reads in recovery
Дата
Msg-id 200704271437.l3REbTH26623@momjian.us
обсуждение исходный текст
Ответ на Re: Avoiding unnecessary reads in recovery  (Heikki Linnakangas <heikki@enterprisedb.com>)
Ответы Re: Avoiding unnecessary reads in recovery  ("Simon Riggs" <simon@2ndquadrant.com>)
Re: Avoiding unnecessary reads in recovery  (Heikki Linnakangas <heikki@enterprisedb.com>)
Список pgsql-hackers
I assume this is 8.4 material.

---------------------------------------------------------------------------

Heikki Linnakangas wrote:
> Tom Lane wrote:
> > "Simon Riggs" <simon@2ndquadrant.com> writes:
> >> As regards the zero_damaged_pages question, I raised that some time ago
> >> but we didn't arrive at an explicit answer. All I would say is we can't
> >> allow invalid pages in the buffer manager at any time, whatever options
> >> we have requested, otherwise other code will fail almost immediately.
> > 
> > Yeah --- the proposed new bufmgr routine should probably explicitly zero
> > the content of the buffer.  It doesn't really matter in the context of
> > WAL recovery, since there can't be any concurrent access to the buffer,
> > but it'd make it safe to use in non-WAL contexts (I think there are
> > other places where we know we are going to init the page and so a
> > physical read is a waste of time).  
> 
> To implement that correctly, I think we'd need to take the content lock 
> to clear the buffer if it's already found in the cache. It doesn't seem 
> right to me for the buffer manager to do that, in the worst case it 
> could lead to deadlocks if that function was ever used while holding 
> another buffer locked.
> 
> What we could have is the semantics of "Return a buffer, with either 
> correct contents or completely zeroed out". It would act just like 
> ReadBuffer if the buffer was already in memory, and zero out the page 
> otherwise. That's a bit strange semantics to have, but is simple to 
> implement and works for the use-cases we've been talking about.
> 
> Patch implementing that attached. I named the function "ReadOrZeroBuffer".
> 
> -- 
>    Heikki Linnakangas
>    EnterpriseDB   http://www.enterprisedb.com


> 
> ---------------------------(end of broadcast)---------------------------
> TIP 6: explain analyze is your friend

--  Bruce Momjian  <bruce@momjian.us>          http://momjian.us EnterpriseDB
http://www.enterprisedb.com
 + If your life is a hard drive, Christ can be your backup. +


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

Предыдущее
От: Bruce Momjian
Дата:
Сообщение: Re: Interaction of PITR backups andBulkoperationsavoiding WAL
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Fwd: How does the partitioned lock manager works?