Re: GiST VACUUM

Поиск
Список
Период
Сортировка
От Heikki Linnakangas
Тема Re: GiST VACUUM
Дата
Msg-id 5f7ed675-d1fc-66ef-f316-645080ff9625@iki.fi
обсуждение исходный текст
Ответ на Re: GiST VACUUM  (Andrey Borodin <x4mmm@yandex-team.ru>)
Ответы Re: GiST VACUUM
Список pgsql-hackers
On 24/03/2019 18:50, Andrey Borodin wrote:
> I was working on new version of gist check in amcheck and understand one more thing:
> 
> /* Can this page be recycled yet? */
> bool
> gistPageRecyclable(Page page)
> {
>      return PageIsNew(page) ||
>          (GistPageIsDeleted(page) &&
>           TransactionIdPrecedes(GistPageGetDeleteXid(page), RecentGlobalXmin));
> }
> 
> Here RecentGlobalXmin can wraparound and page will become unrecyclable for half of xid cycle. Can we prevent it by
resettingPageDeleteXid to InvalidTransactionId before doing RecordFreeIndexPage()?
 
> (Seems like same applies to GIN...)

True, and B-tree has the same issue. I thought I saw a comment somewhere 
in the B-tree code about that earlier, but now I can't find it. I 
must've imagined it.

We could reset it, but that would require dirtying the page. That would 
be just extra I/O overhead, if the page gets reused before XID 
wraparound. We could avoid that if we stored the full XID+epoch, not 
just XID. I think we should do that in GiST, at least, where this is 
new. In the B-tree, it would require some extra code to deal with 
backwards-compatibility, but maybe it would be worth it even there.

- Heikki


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

Предыдущее
От: Daniel Gustafsson
Дата:
Сообщение: pg_malloc0() instead of pg_malloc()+memset()
Следующее
От: Lucas Viecelli
Дата:
Сообщение: Re: warning to publication created and wal_level is not set to logical