Re: Avoiding unnecessary reads in recovery
От | Heikki Linnakangas |
---|---|
Тема | Re: Avoiding unnecessary reads in recovery |
Дата | |
Msg-id | 46332083.6090209@enterprisedb.com обсуждение исходный текст |
Ответ на | Re: Avoiding unnecessary reads in recovery (Bruce Momjian <bruce@momjian.us>) |
Ответы |
Re: Avoiding unnecessary reads in recovery
|
Список | pgsql-hackers |
I was actually thinking that we could slip this in 8.3. It's a simple, well-understood patch, which fixes a little data integrity quirk as well as gives a nice recovery speed up. Bruce Momjian wrote: > 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 > -- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com
В списке pgsql-hackers по дате отправления: