Re: ERROR: multixact X from before cutoff Y found to be still running

Поиск
Список
Период
Сортировка
От Bossart, Nathan
Тема Re: ERROR: multixact X from before cutoff Y found to be still running
Дата
Msg-id A38A1714-CC19-4EF6-BBE3-B716B4B16607@amazon.com
обсуждение исходный текст
Ответ на Re: ERROR: multixact X from before cutoff Y found to be still running  (Jeremy Schneider <schnjere@amazon.com>)
Ответы Re: ERROR: multixact X from before cutoff Y found to be still running
Re: ERROR: multixact X from before cutoff Y found to be still running
Список pgsql-bugs
On 9/4/19, 9:03 PM, "Thomas Munro" <thomas.munro@gmail.com> wrote:
> Both patches prevent mxactLimit from being newer than the oldest
> running multixact.  The v1 patch uses the most aggressive setting
> possible: the oldest running multi; the v2 uses the least aggressive
> of the 'safe' and oldest running multi.  At first glance it seems like
> the second one is better: it only does something different if we're in
> the dangerous scenario you identified, but otherwise it sticks to the
> safe limit, which generates less IO.

Thanks for taking a look!

Right, the v2 patch will effectively ramp-down the freezemin as your
freeze_max_age gets smaller, while the v1 patch will set the effective
freezemin to zero as soon as your multixact age passes the threshold.
I think what is unclear to me is whether this ramp-down behavior is
the intended functionality or we should be doing something similar to
what we do for regular transaction IDs (i.e. force freezemin to zero
right after it hits the "oldest xmin is far in the past" threshold).
The comment above MultiXactMemberFreezeThreshold() explains things
pretty well, but AFAICT it is more geared towards influencing
autovacuum scheduling.  I agree that v2 is safer from the standpoint
that it changes as little as possible, though.

Nathan


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

Предыдущее
От: Andres Freund
Дата:
Сообщение: Re: PostgreSQL12 crash bug report
Следующее
От: Thomas Munro
Дата:
Сообщение: Re: ERROR: multixact X from before cutoff Y found to be still running