Re: Can we get rid of repeated queries from pg_dump?

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: depesz@depesz.com, Stephen Frost <sfrost@snowman.net>, Laurenz Albe <laurenz.albe@cybertec.at>, pgsql-general <pgsql-general@lists.postgresql.org>
Date: 2021-08-29T13:51:58Z
Lists: pgsql-hackers, pgsql-general
Alvaro Herrera <alvherre@alvh.no-ip.org> writes:
> Another pointlessly repetitive query is in getTriggers, which we run
> once per table to be dumped containing triggers.  We could reduce that
> by running it in bulk for many relations at a time.  I suppose it's
> normally not hurtful, but as we grow the number of partitions we allow
> it's going to become a problem.

Perhaps.  In the regression database, only ~10% of the tables have
triggers, so it's likely not going to yield any measurable gain there.
But databases that make heavier use of foreign keys might see a win.

Another thing I've wondered about before is whether it could make sense
to read pg_attribute once rather than once per table.  There might be
a fair amount of wasted work if the dump is selective, and in big DBs
the sheer size of that result could be a problem.  But those reads are
definitely way up there on the number-of-queries scale.

			regards, tom lane



Commits

  1. In pg_dump, avoid doing per-table queries for RLS policies.

  2. Cache the results of format_type() queries in pg_dump.