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
