Re: pg_upgrade failing for 200+ million Large Objects
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: "Kumar, Sachin" <ssetiya@amazon.com>
Cc: Robins Tharakan <tharakan@gmail.com>,
Nathan Bossart <nathandbossart@gmail.com>, Jan Wieck <jan@wi3ck.info>,
Bruce Momjian <bruce@momjian.us>, Zhihong Yu <zyu@yugabyte.com>,
"Andrew Dunstan" <andrew@dunslane.net>,
Magnus Hagander <magnus@hagander.net>,
Peter Eisentraut <peter.eisentraut@enterprisedb.com>,
"pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2024-01-05T20:02:34Z
Lists: pgsql-hackers
I wrote: > "Kumar, Sachin" <ssetiya@amazon.com> writes: >> I was not able to find email thread which details why we are not using >> parallel pg_restore for pg_upgrade. > Well, it's pretty obvious isn't it? The parallelism is being applied > at the per-database level instead. On further reflection, there is a very good reason why it's done like that. Because pg_upgrade is doing schema-only dump and restore, there's next to no opportunity for parallelism within either pg_dump or pg_restore. There's no data-loading steps, and there's no index-building either, so the time-consuming stuff that could be parallelized just isn't happening in pg_upgrade's usage. Now it's true that my 0003 patch moves the needle a little bit: since it makes BLOB creation (as opposed to loading) parallelizable, there'd be some hope for parallel pg_restore doing something useful in a database with very many blobs. But it makes no sense to remove the existing cross-database parallelism in pursuit of that; you'd make many more people unhappy than happy. Conceivably something could be salvaged of your idea by having pg_upgrade handle databases with many blobs differently from those without, applying parallelism within pg_restore for the first kind and then using cross-database parallelism for the rest. But that seems like a lot of complexity compared to the possible win. In any case I'd stay far away from using --section in pg_upgrade. Too many moving parts there. regards, tom lane
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Count individual SQL commands in pg_restore's --transaction-size mode.
- 81db073a2878 17.0 landed
- 0f1290521504 18.0 landed
-
Reduce number of commands dumpTableSchema emits for binary upgrade.
- b3f0e0503f33 18.0 landed
- 2fa989e6a340 17.0 landed
-
Invent --transaction-size option for pg_restore.
- 959b38d770ba 17.0 landed
-
Rearrange pg_dump's handling of large objects for better efficiency.
- a45c78e3284b 17.0 landed
-
Add temporal PRIMARY KEY and UNIQUE constraints
- 46a0cd4cefb4 17.0 cited
-
Fix typo and case in messages
- 7d7ef075d2b3 17.0 cited