Hi,

On Mon, 24 Nov 2025 at 11:47, 邱宇航 <[email protected]> wrote:
>
> > 2025年11月24日 15:50,Nazir Bilal Yavuz <[email protected]> 写道:
> >
> > Could you please explain that a bit more? AFAIU, conditional locks are
> > mainly used to escape from deadlock situations and we can not cause a
> > deadlock here. Is it because using conditional locks might make the
> > functions faster by skipping the wait situations?
>
> Bgwriter/Checkpointer might always blocks the mark buffer dirty SQL.
>
> sequence        Bgwriter/Checkpointer   mark-buffer-dirty SQL
> 1               LockBuffer(1)           WaitBuffer(1)
> 2               UnlockBuffer(1),
>                 and LockBuffer(2)
> 3                                       After unlock wakeup,
>                                         WaitBuffer(2)
> ...             ...                     ...
>
> I don't know if this could really happen. Maybe we need some tests. I
> just afraid that pg_buffercache_mark_dirty_{relation, all} SQL could be
> slow and inefficient.

I do not think that will be a problem but I can change it if the
general consensus is towards this way. Also, if we change this for
pg_buffercache_mark_dirty_* functions, I think we need to apply the
same for the pg_buffercache_evict_* functions.

-- 
Regards,
Nazir Bilal Yavuz
Microsoft


Reply via email to