Re: improve performance of pg_dump --binary-upgrade

Corey Huinker <corey.huinker@gmail.com>

From: Corey Huinker <corey.huinker@gmail.com>
To: Nathan Bossart <nathandbossart@gmail.com>
Cc: pgsql-hackers@postgresql.org
Date: 2024-04-18T06:08:28Z
Lists: pgsql-hackers
>
> One downside of this approach is the memory usage.  This was more-or-less
>
>
Bar-napkin math tells me in a worst-case architecture and braindead byte
alignment, we'd burn 64 bytes per struct, so the 100K tables cited would be
about 6.25MB of memory.

The obvious low-memory alternative would be to make a prepared statement,
though that does nothing to cut down on the roundtrips.

I think this is a good trade off.

Commits

  1. Improve performance of binary_upgrade_set_pg_class_oids().

  2. Remove is_index parameter from binary_upgrade_set_pg_class_oids().

  3. pg_upgrade: Preserve relfilenodes and tablespace OIDs.

  4. pg_dump: minor performance improvements from eliminating sub-SELECTs.