Re: Performance issues during pg_restore -j with big partitioned table
Adrian Klaver <adrian.klaver@aklaver.com>
From: Adrian Klaver <adrian.klaver@aklaver.com>
To: Dimitrios Apostolou <jimis@gmx.net>, pgsql-general@lists.postgresql.org
Date: 2025-04-02T17:39:36Z
Lists: pgsql-general
On 4/2/25 10:32 AM, Dimitrios Apostolou wrote: > Hello list. > > My database includes one table with 1000 partitions, all of them rather > sizeable. I run: > > pg_restore -j12 --no-tablespaces --disable-triggers --exit-on-error > --no-owner --no-privileges -n public -d newdb custom_format_dump.pgdump > > Right now after 24h of restore, I notice weird behaviour, so I have > several questions about it: > > + 11 postgres backend processes are sleeping as "TRUNCATE TABLE waiting". > I see that they are waiting to issue a TRUNCATE for one of the > partitions and then COPY data to it. Checking the log I see that > several partitions have already been copied finished, but many more > are left to start. > > Why is a TRUNCATE needed at the start of a partition's COPY phase? I > didn't issue a --clean on the command line (I don't need it as my > database is newly created), and I don't see a mention of related > TRUNCATE in the pg_restore manual. --clean will drop the object entirely not TRUNCATE. I'm guessing that this is being done by you per: https://www.postgresql.org/message-id/53760c70-4a87-a453-9e02-57abc9cb2e54%40gmx.net "After each failed attempt, I need to issue a TRUNCATE table1,table2,... before I try again. " > > > Thanks in advance, > Dimitris > > -- Adrian Klaver adrian.klaver@aklaver.com
Commits
-
Elide not-null constraint checks on child tables during PK creation
- 11ff192b5bb7 18.0 landed