Re: Multiple FPI_FOR_HINT for the same block during killing btreeindex items

Поиск
Список
Период
Сортировка
От Peter Geoghegan
Тема Re: Multiple FPI_FOR_HINT for the same block during killing btreeindex items
Дата
Msg-id CAH2-Wzm4FzvwnJTG9Pdc2aPHPB4GffWV1yj=2=9yNuATphvHCA@mail.gmail.com
обсуждение исходный текст
Ответ на Multiple FPI_FOR_HINT for the same block during killing btree index items  (Masahiko Sawada <masahiko.sawada@2ndquadrant.com>)
Ответы Re: Multiple FPI_FOR_HINT for the same block during killing btreeindex items
Re: Multiple FPI_FOR_HINT for the same block during killing btreeindex items
Список pgsql-hackers
On Wed, Apr 8, 2020 at 10:56 PM Masahiko Sawada
<masahiko.sawada@2ndquadrant.com> wrote:
> Here is the reproducer:

What version of Postgres did you notice the actual customer issue on?
I ask because I wonder if the work on B-Tree indexes in Postgres 12
affects the precise behavior you get here with real world workloads.
It probably makes _bt_killitems() more effective with some workloads,
which naturally increases the likelihood of having multiple FPI issued
in the manner that you describe. OTOH, it might make it less likely
with low cardinality indexes, since large groups of garbage duplicate
tuples tend to get concentrated on just a few leaf pages.

> The inner test in the comment "found the item" never tests the item
> for being dead. So maybe we can add !ItemIdIsDead(iid) to that
> condition. But there still is a race condition of recording multiple
> FPIs can happen. Maybe a better solution is to change the lock to
> exclusive, at least when wal_log_hints = on, so that only one process
> can run this code -- the reduction in concurrency might be won back by
> the fact that we don't wal-log the page multiple times.

I like the idea of checking !ItemIdIsDead(iid) as a further condition
of killing the item -- there is clearly no point in doing work to kill
an item that is already dead. I don't like the idea of using an
exclusive buffer lock (even if it's just with wal_log_hints = on),
though.

-- 
Peter Geoghegan



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

Предыдущее
От: Andres Freund
Дата:
Сообщение: Re: Parallel copy
Следующее
От: Andrew Dunstan
Дата:
Сообщение: Re: cleaning perl code