Update guidance for running vacuumdb after pg_upgrade.
authorNathan Bossart <nathan@postgresql.org>
Tue, 18 Mar 2025 21:32:56 +0000 (16:32 -0500)
committerNathan Bossart <nathan@postgresql.org>
Tue, 18 Mar 2025 21:32:56 +0000 (16:32 -0500)
Now that pg_upgrade can carry over most optimizer statistics, we
should recommend using vacuumdb's new --missing-stats-only option
to only analyze relations that are missing statistics.

Reviewed-by: John Naylor <johncnaylorls@gmail.com>
Discussion: https://postgr.es/m/Z5O1bpcwDrMgyrYy%40nathan

doc/src/sgml/ref/pgupgrade.sgml
src/bin/pg_upgrade/check.c

index 9ef7a84eed04b016ca76819d8592d50085af5783..5db761d1ff19fbf045884496f1f59ae0466f0a88 100644 (file)
@@ -807,10 +807,11 @@ psql --username=postgres --file=script.sql postgres
     </para>
 
     <para>
-     Using <command>vacuumdb --all --analyze-only</command> can efficiently
-     generate such statistics, and the use of <option>--jobs</option>
-     can speed it up.  Option <option>--analyze-in-stages</option>
-     can be used to generate minimal statistics quickly.
+     Using <command>vacuumdb --all --analyze-only --missing-stats-only</command>
+     can efficiently generate such statistics.  Alternatively,
+     <command>vacuumdb --all --analyze-in-stages --missing-stats-only</command>
+     can be used to generate minimal statistics quickly.  For either command,
+     the use of <option>--jobs</option> can speed it up.
      If <varname>vacuum_cost_delay</varname> is set to a non-zero
      value, this can be overridden to speed up statistics generation
      using <envar>PGOPTIONS</envar>, e.g., <literal>PGOPTIONS='-c
index d32fc3d88ec7f702ddccb5b7f65de7e812b617ea..88daa8080351327263314cf6ee238e4705fa8777 100644 (file)
@@ -781,7 +781,7 @@ output_completion_banner(char *deletion_script_file_name)
    pg_log(PG_REPORT,
           "Some optimizer statistics may not have been transferred by pg_upgrade.\n"
           "Once you start the new server, consider running:\n"
-          "    %s/vacuumdb %s--all --analyze-in-stages", new_cluster.bindir, user_specification.data);
+          "    %s/vacuumdb %s--all --analyze-in-stages --missing-stats-only", new_cluster.bindir, user_specification.data);
 
    if (deletion_script_file_name)
        pg_log(PG_REPORT,