On Fri, Nov 26, 2021 at 12:37 PM Peter Geoghegan <pg@bowt.ie> wrote:
> Unifying everything cannot be approached mechanically, so doing this
> requires real buy-in. It's a bit tricky because VACUUM VERBOSE is
> supposed to show real time information about what just finished, as a
> kind of rudimentary progress indicator, while log_autovacuum_*
> summarizes the whole entire VACUUM operation. This difference is most
> notable when there are multiple index vacuuming passes ("index
> scans"), or when we truncate the heap relation.
I based these remarks on one sentence about VERBOSE that appears in vacuum.sgml:
"When VERBOSE is specified, VACUUM emits progress messages to indicate
which table is currently being processed. Various statistics about the
tables are printed as well."
There is a very similar sentence in analyze.sgml. It seems that I
overinterpreted the word "progress" before. I now believe that VACUUM
VERBOSE wasn't ever really intended to indicate the progress of one
particular vacuumlazy.c-wise operation targeting one particular heap
relation with storage. The VERBOSE option gives some necessary
table-level structure to an unqualified "VACUUM VERBOSE" -- same as
an unqualified "ANALYZE VERBOSE". The progress is explicitly table
granularity progress. Nothing more.
I definitely need to preserve that aspect of VERBOSE output --
obviously the output must still make it perfectly clear which
particular table a given run of information relates to, especially
with unqualified "VACUUM VERBOSE". Fortunately, that'll be easy. In
fact, my proposal will improve things here, because now there will
only be a single extra INFO line per table (so one INFO line for the
table name, another with newlines for the instrumentation itself).
This matches the current behavior with an unqualified "ANALYZE
VERBOSE".
--
Peter Geoghegan