Re: min_safe_lsn column in pg_replication_slots view

Поиск
Список
Период
Сортировка
От Fujii Masao
Тема Re: min_safe_lsn column in pg_replication_slots view
Дата
Msg-id 02b19420-20e6-fc3b-d6dd-62e5e6abe511@oss.nttdata.com
обсуждение исходный текст
Ответ на Re: min_safe_lsn column in pg_replication_slots view  (Amit Kapila <amit.kapila16@gmail.com>)
Ответы Re: min_safe_lsn column in pg_replication_slots view  (Fujii Masao <masao.fujii@oss.nttdata.com>)
Список pgsql-hackers

On 2020/06/26 13:45, Amit Kapila wrote:
> On Fri, Jun 26, 2020 at 4:54 AM Alvaro Herrera <alvherre@2ndquadrant.com> wrote:
>>
>> On 2020-Jun-26, Michael Paquier wrote:
>>
>>> On Thu, Jun 25, 2020 at 11:24:27AM -0400, Alvaro Herrera wrote:
>>>> I don't understand the proposal.  Michael posted a patch that adds
>>>> pg_wal_oldest_lsn(), and you say we should apply the patch except the
>>>> part that adds that function -- so what part would be applying?
>>>
>>> I have sent last week a patch about only the removal of min_safe_lsn:
>>> https://www.postgresql.org/message-id/20200619121552.GH453547@paquier.xyz
>>> So this applies to this part.
>>
>> Well, I oppose that because it leaves us with no way to monitor slot
>> limits.  In his opening email, Masao-san proposed to simply change the
>> value by adding 1.  How you go from adding 1 to a column to removing
>> the column completely with no recourse, is beyond me.
>>
>> Let me summarize the situation and possible ways forward as I see them.
>> If I'm mistaken, please correct me.
>>
>> Problems:
>> i)  pg_replication_slot.min_safe_lsn has a weird definition in that all
>>      replication slots show the same value
>>
> 
> It is also not clear how the user can make use of that value?
> 
>> ii) min_safe_lsn cannot be used with pg_walfile_name, because it returns
>>      the name of the previous segment.
>>
>> Proposed solutions:
>>
>> a) Do nothing -- keep the min_safe_lsn column as is.  Warn users that
>>     pg_walfile_name should not be used with this column.
>> b) Redefine min_safe_lsn to be lsn+1, so that pg_walfile_name can be used
>>     and return a useful value.
>> c) Remove min_safe_lsn; add functions that expose the same value
>> d) Remove min_safe_lsn; add a new view that exposes the same value and
>>     possibly others
>>
>> e) Replace min_safe_lsn with a "distance" column, which reports
>>     restart_lsn - oldest valid LSN
>>     (Note that you no longer have an LSN in this scenario, so you can't
>>     call pg_walfile_name.)

I like (e).

> 
> Can we consider an option to "Remove min_safe_lsn; document how a user
> can monitor the distance"?  We have a function to get current WAL
> insert location and other things required are available either via
> view or as guc variable values.  The reason I am thinking of this
> option is that it might be better to get some more feedback on what is
> the most appropriate value to display.  However, I am okay if we can
> reach a consensus on one of the above options.

Yes, that's an idea. But it might not be easy to calculate that distance
manually by subtracting max_slot_wal_keep_size from the current LSN.
Because we've not supported -(pg_lsn, numeric) operator yet. I'm
proposing that operator, but it's for v14.

Regards,


-- 
Fujii Masao
Advanced Computing Technology Center
Research and Development Headquarters
NTT DATA CORPORATION



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

Предыдущее
От: Kyotaro Horiguchi
Дата:
Сообщение: Possible missing segments in archiving on standby
Следующее
От: Etsuro Fujita
Дата:
Сообщение: Re: POC: postgres_fdw insert batching