This problem is more acute when the FK Table stores a small number of rows
like types or codes.
I think in those cases an enum type should be used instead of a column with
a FK.
Thanks.

On Thu, Sep 14, 2023 at 7:23 AM Alvaro Herrera <alvhe...@alvh.no-ip.org>
wrote:

> On 2023-Sep-13, bruno da silva wrote:
>
> > I just had an outage on postgres 14 due to multixact members limit
> exceeded.
>
> Sadly, that's not as uncommon as we would like.
>
> > So the documentation says "There is a separate storage area which holds
> the
> > list of members in each multixact, which also uses a 32-bit counter and
> > which must also be managed."
>
> Right.
>
> > Questions:
> > having a 32-bit counter on this separated storage means that there is a
> > global limit of multixact IDs for a database OID?
>
> A global limit of multixact members (each multixact ID can have one or
> more members), across the whole instance.  It is a shared resource for
> all databases in an instance.
>
> > Is there a way to monitor this storage limit or counter using any pg_stat
> > table/view?
>
> Not at present.
>
> > are foreign keys a big source of multixact IDs so not recommended on
> tables
> > with a lot of data and a lot of churn?
>
> Well, ideally you shouldn't consider operating without foreign keys at
> any rate, but yes, foreign keys are one of the most common causes of
> multixacts being used, and removing FKs may mean a decrease in multixact
> usage.  (The other use case of multixact usage is tuples being locked
> and updated with an intervening savepoint.)
>
>
> We could have a mode that we can set on tables with little movement and
> many incoming FKs, that tells the system something like "in this table,
> deletes/updates are disallowed, so FKs don't need to lock rows".  Or
> maybe "in this table, deletes are disallowed and updates can only change
> columns that aren't used by UNIQUE NOT NULL indexes, so FKs don't need
> to lock rows".  This might save a ton of multixact traffic.
>
> --
> Álvaro Herrera        Breisgau, Deutschland  —
> https://www.EnterpriseDB.com/
> "Hay dos momentos en la vida de un hombre en los que no debería
> especular: cuando puede permitírselo y cuando no puede" (Mark Twain)
>


-- 
Bruno da Silva

Reply via email to