Re: Extension Enhancement: Buffer Invalidation in pg_buffercache

From: Thomas Munro <thomas(dot)munro(at)gmail(dot)com>
To: Maksim Milyutin <milyutinma(at)gmail(dot)com>
Cc: Maxim Orlov <orlovmg(at)gmail(dot)com>, vignesh C <vignesh21(at)gmail(dot)com>, Palak Chaturvedi <chaturvedipalak1911(at)gmail(dot)com>, Jim Nasby <jim(dot)nasby(at)gmail(dot)com>, pgsql-hackers(at)postgresql(dot)org, Nitin Jadhav <nitinjadhavpostgres(at)gmail(dot)com>
Subject: Re: Extension Enhancement: Buffer Invalidation in pg_buffercache
Date: 2024-04-29 20:59:15
Message-ID: CA+hUKG+d=xL7=ekrxmirqVKgMFPWCbsGCM7UuARmMii7vK1Maw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue, Apr 30, 2024 at 7:17 AM Thomas Munro <thomas(dot)munro(at)gmail(dot)com> wrote:
> On Tue, Apr 30, 2024 at 6:47 AM Maksim Milyutin <milyutinma(at)gmail(dot)com> wrote:
> >> Should not we call at the end the StrategyFreeBuffer() function to add target buffer to freelist and not miss it after invalidation?
>
> > Please take a look at this issue, current implementation of EvictUnpinnedBuffer() IMO is erroneous - evicted buffers are lost permanently and will not be reused again

I don't think that's true: it is not lost permanently, it'll be found
by the regular clock hand. Perhaps it should be put on the freelist
so it can be found again quickly, but I'm not sure that's a bug, is
it? If it were true, even basic testing eg select
count(pg_buffercache_evict(bufferid)) from pg_buffercache would leave
the system non-functional, but it doesn't, the usual CLOCK algorithm
just does its thing.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Noah Misch 2024-04-29 21:27:56 Re: TerminateOtherDBBackends code comments inconsistency.
Previous Message Daniel Gustafsson 2024-04-29 20:52:44 Re: DROP OWNED BY fails to clean out pg_init_privs grants