Re: Recovering from detoast-related catcache invalidations

Поиск
Список
Период
Сортировка
От Xiaoran Wang
Тема Re: Recovering from detoast-related catcache invalidations
Дата
Msg-id CAGjhLkMzNfAG=fV=9HqZs_ixOXZax43PhAjNMyfBujjz75kxLw@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Recovering from detoast-related catcache invalidations  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
This is an interesting idea.
 Although some catalog tables are not in catcaches,
such as pg_depend, when scanning them, if there is any SharedInvalidationMessage, the CatalogSnapshot
will be invalidated and recreated ("RelationInvalidatesSnapshotsOnly" in  syscache.c)
Maybe during the system_scan, it receives the SharedInvalidationMessages and returns the tuples which
are out of date. systable_recheck_tuple is used in dependency.c for such case.



Tom Lane <tgl@sss.pgh.pa.us> 于2024年1月14日周日 03:12写道:
I wrote:
> Xiaoran Wang <fanfuxiaoran@gmail.com> writes:
>> Hmm, how about first checking if any invalidated shared messages have been
>> accepted, then rechecking the tuple's visibility?
>> If there is no invalidated shared message accepted during
>> 'toast_flatten_tuple',
>> there is no need to do then visibility check, then it can save several
>> CPU cycles.

> Meh, I'd just as soon not add the additional dependency/risk of bugs.
> This is an expensive and seldom-taken code path, so I don't think
> shaving a few cycles is really important.

It occurred to me that this idea might be more interesting if we
could encapsulate it right into systable_recheck_tuple: something
like having systable_beginscan capture the current
SharedInvalidMessageCounter and save it in the SysScanDesc struct,
then compare in systable_recheck_tuple to possibly short-circuit
that work.  This'd eliminate one of the main bug hazards in the
idea, namely that you might capture SharedInvalidMessageCounter too
late, after something's already happened.  However, the whole idea
only works for catalogs that have catcaches, and the other users of
systable_recheck_tuple are interested in pg_depend which doesn't.
So that put a damper on my enthusiasm for the idea.

                        regards, tom lane

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

Предыдущее
От: Nathan Bossart
Дата:
Сообщение: Re: ALTER ROLE documentation improvement
Следующее
От: Peter Smith
Дата:
Сообщение: Re: Documentation to upgrade logical replication cluster