1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-05 23:56:58 +03:00

Further adjust guidance for running vacuumdb after pg_upgrade.

Since pg_upgrade does not transfer the cumulative statistics used
to trigger autovacuum and autoanalyze, the server may take much
longer than expected to process them post-upgrade.  Currently, we
recommend analyzing only relations for which optimizer statistics
were not transferred by using the --analyze-in-stages and
--missing-stats-only options.  This commit appends another
recommendation to analyze all relations to update the relevant
cumulative statistics by using the --analyze-only option.  This is
similar to the recommendation for pg_stat_reset().

Reported-by: Christoph Berg <myon@debian.org>
Reviewed-by: Christoph Berg <myon@debian.org>
Discussion: https://postgr.es/m/aAfxfKC82B9NvJDj%40msg.df7cb.de
This commit is contained in:
Nathan Bossart 2025-04-30 14:12:59 -05:00
parent f60420cff6
commit d5f1b6a75b
2 changed files with 13 additions and 8 deletions

View File

@ -833,17 +833,19 @@ psql --username=postgres --file=script.sql postgres
<para> <para>
Because not all statistics are not transferred by Because not all statistics are not transferred by
<command>pg_upgrade</command>, you will be instructed to run a command to <command>pg_upgrade</command>, you will be instructed to run commands to
regenerate that information at the end of the upgrade. You might need to regenerate that information at the end of the upgrade. You might need to
set connection parameters to match your new cluster. set connection parameters to match your new cluster.
</para> </para>
<para> <para>
Using <command>vacuumdb --all --analyze-only --missing-stats-only</command> First, use
can efficiently generate such statistics. Alternatively,
<command>vacuumdb --all --analyze-in-stages --missing-stats-only</command> <command>vacuumdb --all --analyze-in-stages --missing-stats-only</command>
can be used to generate minimal statistics quickly. For either command, to quickly generate minimal optimizer statistics for relations without
the use of <option>--jobs</option> can speed it up. any. Then, use <command>vacuumdb --all --analyze-only</command> to ensure
all relations have updated cumulative statistics for triggering vacuum and
analyze. For both commands, the use of <option>--jobs</option> can speed
it up.
If <varname>vacuum_cost_delay</varname> is set to a non-zero If <varname>vacuum_cost_delay</varname> is set to a non-zero
value, this can be overridden to speed up statistics generation value, this can be overridden to speed up statistics generation
using <envar>PGOPTIONS</envar>, e.g., <literal>PGOPTIONS='-c using <envar>PGOPTIONS</envar>, e.g., <literal>PGOPTIONS='-c

View File

@ -814,9 +814,12 @@ output_completion_banner(char *deletion_script_file_name)
} }
pg_log(PG_REPORT, pg_log(PG_REPORT,
"Some optimizer statistics may not have been transferred by pg_upgrade.\n" "Some statistics are not transferred by pg_upgrade.\n"
"Once you start the new server, consider running:\n" "Once you start the new server, consider running these two commands:\n"
" %s/vacuumdb %s--all --analyze-in-stages --missing-stats-only", new_cluster.bindir, user_specification.data); " %s/vacuumdb %s--all --analyze-in-stages --missing-stats-only\n"
" %s/vacuumdb %s--all --analyze-only",
new_cluster.bindir, user_specification.data,
new_cluster.bindir, user_specification.data);
if (deletion_script_file_name) if (deletion_script_file_name)
pg_log(PG_REPORT, pg_log(PG_REPORT,