Re: BUG #16722: PG hanging on COPY when table has close to 2^32 toasts in the table.

From: Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com>
To: skoposov(at)ed(dot)ac(dot)uk, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #16722: PG hanging on COPY when table has close to 2^32 toasts in the table.
Date: 2020-11-18 01:18:20
Message-ID: 95bfb4b5-2e0e-8ab7-12cf-03fae3367c52@oss.nttdata.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On 2020/11/17 3:15, PG Bug reporting form wrote:
> The following bug has been logged on the website:
>
> Bug reference: 16722
> Logged by: Sergey Koposov
> Email address: skoposov(at)ed(dot)ac(dot)uk
> PostgreSQL version: 11.9
> Operating system: debian
> Description:
>
> Hi,
>
> When ingesting a billion or so rows in the table that has some array columns
> (see schema below), at some point all the backends doing the ingestion hang
> with 100% CPU usage. When investigating, I think I can trace this to the
> limit of 2^32 toasted records per table.

Yes, this is the limitation of the number of out-of-line values in toast.
https://wiki.postgresql.org/wiki/TOAST#Total_table_size_limit

> See the gdb full backtrace of
> hanged backends in the bottom. When the problem occurs, it has 272 mill
> records.
> Basically the hanging happens in GetNewOidWithIndex called by
> toast_save_datum.
> While I understand the limit for the toast number is there to stay, but the
> behaviour of PG next to the limit is IMO a bug (or at least non-trivial) .
>
> I would rather prefer to see an error-message as opposed to backends
> hanging.

To emit an error, we need to check that there is no unused OID for
the toast and it would take very long to do that. So I'm not sure
if to emit an error message really improves the current situation or not.

OTOH it might be good idea to emit a warning message (every time we
cannot find unused OID in recent 1 million OIDs, for example) or report
the issue as wait event, or something while the record insertion is hanging
because of toast limit, so that we can easily detect the issue.

Regards,

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

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Peter Smith 2020-11-18 02:47:54 Re: BUG #16643: PG13 - Logical replication - initial startup never finishes and gets stuck in startup loop
Previous Message Devrim Gündüz 2020-11-17 16:13:27 Re: BUG #16721: ERROR: could not load library "/usr/pgsql-11/lib/rtpostgis-2.5.so": /usr/gdal32/lib/libgdal.so.28: