Re: Add pg_buffercache_mark_dirty[_all] functions to the pg_buffercache

Поиск
Список
Период
Сортировка
От 邱宇航
Тема Re: Add pg_buffercache_mark_dirty[_all] functions to the pg_buffercache
Дата
Msg-id BEB38EF0-CC63-4474-9393-4EFAD8C9966F@gmail.com
обсуждение исходный текст
Ответ на Re: Add pg_buffercache_mark_dirty[_all] functions to the pg_buffercache  (Nazir Bilal Yavuz <byavuz81@gmail.com>)
Список pgsql-hackers
> 2025年11月24日 15:50,Nazir Bilal Yavuz <byavuz81@gmail.com> 写道:
>
> 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.

> Do you mean that we should not return 'buffer_already_dirty'
> information and we should only return 'buffer_dirtied' information in
> the 'pg_buffercache_mark_dirty' function? If you are suggesting that,
> I think returning 'buffer_already_dirty' has a value in it.

Oops, I read the v7 patch. Ignore this.

Best regards,
Yuhang Qiu




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