Clarify VACUUM FULL exclusion in total_vacuum_time docs

Started by Fujii Masao10 months ago12 messagesdocs
Jump to latest
#1Fujii Masao
masao.fujii@gmail.com

Hi,

Since last_vacuum and vacuum_count in pg_stat_all_tables explicitly mention
that they don't include VACUUM FULL ("not counting VACUUM FULL"), I think
we should add the same clarification to the description of total_vacuum_time.
This field also excludes VACUUM FULL, and without this note, users might
mistakenly think the time spent on VACUUM FULL is included. Thought?

         <structfield>total_vacuum_time</structfield> <type>double precision</type>
        </para>
        <para>
-       Total time this table has been manually vacuumed, in milliseconds.
+       Total time this table has been manually vacuumed, in milliseconds
+       (not counting <command>VACUUM FULL</command>).
         (This includes the time spent sleeping due to cost-based delays.)
        </para></entry>
       </row>

Regards,

--
Fujii Masao
NTT DATA Japan Corporation

#2David G. Johnston
david.g.johnston@gmail.com
In reply to: Fujii Masao (#1)
Re: Clarify VACUUM FULL exclusion in total_vacuum_time docs

On Friday, June 6, 2025, Fujii Masao <masao.fujii@oss.nttdata.com> wrote:

Hi,

Since last_vacuum and vacuum_count in pg_stat_all_tables explicitly mention
that they don't include VACUUM FULL ("not counting VACUUM FULL"), I think
we should add the same clarification to the description of
total_vacuum_time.
This field also excludes VACUUM FULL, and without this note, users might
mistakenly think the time spent on VACUUM FULL is included. Thought?

<structfield>total_vacuum_time</structfield> <type>double
precision</type>
</para>
<para>
-       Total time this table has been manually vacuumed, in milliseconds.
+       Total time this table has been manually vacuumed, in milliseconds
+       (not counting <command>VACUUM FULL</command>).
(This includes the time spent sleeping due to cost-based delays.)
</para></entry>
</row>

Makes sense. Our naming this table rewrite vacuum full does confuse
people into thinking it is related to vacuum.

David J.

#3Robert Treat
xzilla@users.sourceforge.net
In reply to: David G. Johnston (#2)
Re: Clarify VACUUM FULL exclusion in total_vacuum_time docs

On Fri, Jun 6, 2025 at 9:57 AM David G. Johnston
<david.g.johnston@gmail.com> wrote:

On Friday, June 6, 2025, Fujii Masao <masao.fujii@oss.nttdata.com> wrote:

Hi,

Since last_vacuum and vacuum_count in pg_stat_all_tables explicitly mention
that they don't include VACUUM FULL ("not counting VACUUM FULL"), I think
we should add the same clarification to the description of total_vacuum_time.
This field also excludes VACUUM FULL, and without this note, users might
mistakenly think the time spent on VACUUM FULL is included. Thought?

<structfield>total_vacuum_time</structfield> <type>double precision</type>
</para>
<para>
-       Total time this table has been manually vacuumed, in milliseconds.
+       Total time this table has been manually vacuumed, in milliseconds
+       (not counting <command>VACUUM FULL</command>).
(This includes the time spent sleeping due to cost-based delays.)
</para></entry>
</row>

Makes sense. Our naming this table rewrite vacuum full does confuse people into thinking it is related to vacuum.

+1 for this change, but I think we should also update
n_ins_since_vacuum as well, no?

Robert Treat
https://xzilla.net

#4Fujii Masao
masao.fujii@gmail.com
In reply to: Robert Treat (#3)
Re: Clarify VACUUM FULL exclusion in total_vacuum_time docs

On 2025/06/07 0:13, Robert Treat wrote:

On Fri, Jun 6, 2025 at 9:57 AM David G. Johnston
<david.g.johnston@gmail.com> wrote:

On Friday, June 6, 2025, Fujii Masao <masao.fujii@oss.nttdata.com> wrote:

Hi,

Since last_vacuum and vacuum_count in pg_stat_all_tables explicitly mention
that they don't include VACUUM FULL ("not counting VACUUM FULL"), I think
we should add the same clarification to the description of total_vacuum_time.
This field also excludes VACUUM FULL, and without this note, users might
mistakenly think the time spent on VACUUM FULL is included. Thought?

<structfield>total_vacuum_time</structfield> <type>double precision</type>
</para>
<para>
-       Total time this table has been manually vacuumed, in milliseconds.
+       Total time this table has been manually vacuumed, in milliseconds
+       (not counting <command>VACUUM FULL</command>).
(This includes the time spent sleeping due to cost-based delays.)
</para></entry>
</row>

Makes sense. Our naming this table rewrite vacuum full does confuse people into thinking it is related to vacuum.

+1 for this change,

Thanks both for the review!

but I think we should also update
n_ins_since_vacuum as well, no?

I didn't update n_ins_since_vacuum since it's mainly used by autovacuum rather
than end users, and there haven't been any complaints about the current
description so far. That said, I don't have a strong opinion either way,
so I'm fine with making the change if others think it's worthwhile.

Regards,

--
Fujii Masao
NTT DATA Japan Corporation

#5Robert Treat
xzilla@users.sourceforge.net
In reply to: Fujii Masao (#4)
Re: Clarify VACUUM FULL exclusion in total_vacuum_time docs

On Thu, Jun 12, 2025 at 10:28 PM Fujii Masao
<masao.fujii@oss.nttdata.com> wrote:

On 2025/06/07 0:13, Robert Treat wrote:

On Fri, Jun 6, 2025 at 9:57 AM David G. Johnston
<david.g.johnston@gmail.com> wrote:

On Friday, June 6, 2025, Fujii Masao <masao.fujii@oss.nttdata.com> wrote:

Hi,

Since last_vacuum and vacuum_count in pg_stat_all_tables explicitly mention
that they don't include VACUUM FULL ("not counting VACUUM FULL"), I think
we should add the same clarification to the description of total_vacuum_time.
This field also excludes VACUUM FULL, and without this note, users might
mistakenly think the time spent on VACUUM FULL is included. Thought?

<structfield>total_vacuum_time</structfield> <type>double precision</type>
</para>
<para>
-       Total time this table has been manually vacuumed, in milliseconds.
+       Total time this table has been manually vacuumed, in milliseconds
+       (not counting <command>VACUUM FULL</command>).
(This includes the time spent sleeping due to cost-based delays.)
</para></entry>
</row>

Makes sense. Our naming this table rewrite vacuum full does confuse people into thinking it is related to vacuum.

+1 for this change,

Thanks both for the review!

but I think we should also update
n_ins_since_vacuum as well, no?

I didn't update n_ins_since_vacuum since it's mainly used by autovacuum rather
than end users, and there haven't been any complaints about the current
description so far. That said, I don't have a strong opinion either way,
so I'm fine with making the change if others think it's worthwhile.

Well, I admit I mostly mentioned it because when I noticed this one
wasn't documented the same way the other ones were, I second-guessed
myself about if I knew how it really behaved and did a quick test to
confirm :-)
I suspect others might have similar confusion.

Robert Treat
https://xzilla.net

#6Fujii Masao
masao.fujii@gmail.com
In reply to: Robert Treat (#5)
Re: Clarify VACUUM FULL exclusion in total_vacuum_time docs

On 2025/06/13 21:09, Robert Treat wrote:

Well, I admit I mostly mentioned it because when I noticed this one
wasn't documented the same way the other ones were, I second-guessed
myself about if I knew how it really behaved and did a quick test to
confirm :-)
I suspect others might have similar confusion.

Maybe I failed to follow your point here... Are you suggesting it's worth
mentioning that n_ins_since_vacuum doesn't count VACUUM FULL, to help
avoid potential user confusion? If so, since n_ins_since_vacuum was
introduced in v13, we'd need to backpatch that documentation change to v13?

As for total_vacuum_time, since it's new in v18, I'd like to apply
the proposed change there.

Regards,

--
Fujii Masao
NTT DATA Japan Corporation

#7Robert Treat
xzilla@users.sourceforge.net
In reply to: Fujii Masao (#6)
Re: Clarify VACUUM FULL exclusion in total_vacuum_time docs

On Tue, Jun 17, 2025 at 10:54 AM Fujii Masao
<masao.fujii@oss.nttdata.com> wrote:

On 2025/06/13 21:09, Robert Treat wrote:

Well, I admit I mostly mentioned it because when I noticed this one
wasn't documented the same way the other ones were, I second-guessed
myself about if I knew how it really behaved and did a quick test to
confirm :-)
I suspect others might have similar confusion.

Maybe I failed to follow your point here... Are you suggesting it's worth
mentioning that n_ins_since_vacuum doesn't count VACUUM FULL, to help
avoid potential user confusion? If so, since n_ins_since_vacuum was
introduced in v13, we'd need to backpatch that documentation change to v13?

As for total_vacuum_time, since it's new in v18, I'd like to apply
the proposed change there.

I think the more cases where you document this behavior (and I do like
the idea of documenting it for total_vacuum_time), the more one is
likely to think that places where it is not documented operate
differently. To that end, I think documenting it for
n_ins_since_vacuum as well is a good idea, but I don't feel strongly
that it needs to be backpatched; the old documentation wasn't wrong
per se, rather this is a documentation improvement as a result of new
development.

Robert Treat
https://xzilla.net

#8Fujii Masao
masao.fujii@gmail.com
In reply to: Robert Treat (#7)
Re: Clarify VACUUM FULL exclusion in total_vacuum_time docs

On 2025/06/18 6:53, Robert Treat wrote:

I think the more cases where you document this behavior (and I do like
the idea of documenting it for total_vacuum_time), the more one is
likely to think that places where it is not documented operate
differently. To that end, I think documenting it for
n_ins_since_vacuum as well is a good idea, but I don't feel strongly
that it needs to be backpatched; the old documentation wasn't wrong
per se, rather this is a documentation improvement as a result of new
development.

Agreed. The attached patch updates the docs to clarify that both
total_vacuum_time and n_ins_since_vacuum exclude VACUUM FULL.

Unless there are any objections, I'll commit this to master and
back-patch it to v18 only.

Regards,

--
Fujii Masao
NTT DATA Japan Corporation

Attachments:

v1-0001-doc-Clarify-that-total_vacuum_time-excludes-VACUU.patchtext/plain; charset=UTF-8; name=v1-0001-doc-Clarify-that-total_vacuum_time-excludes-VACUU.patchDownload+3-2
#9Laurenz Albe
laurenz.albe@cybertec.at
In reply to: Fujii Masao (#8)
Re: Clarify VACUUM FULL exclusion in total_vacuum_time docs

On Tue, 2025-07-15 at 01:51 +0900, Fujii Masao wrote:

On 2025/06/18 6:53, Robert Treat wrote:

I think the more cases where you document this behavior (and I do like
the idea of documenting it for total_vacuum_time), the more one is
likely to think that places where it is not documented operate
differently. To that end, I think documenting it for
n_ins_since_vacuum as well is a good idea, but I don't feel strongly
that it needs to be backpatched; the old documentation wasn't wrong
per se, rather this is a documentation improvement as a result of new
development.

Agreed. The attached patch updates the docs to clarify that both
total_vacuum_time and n_ins_since_vacuum exclude VACUUM FULL.

Unless there are any objections, I'll commit this to master and
back-patch it to v18 only.

I think the patch is good.

One question for me is whether we should use "VACUUM (FULL)" rather
than "VACUUM FULL".

On the one hand, the documentation (and most users) still use the
old syntax without parentheses almost everywhere.

On the other hand, reading the VACUUM reference page, I get the
feeling that the new syntax with parentheses should be favored.
After all, the old syntax doesn't support any of the recently
added options and restricts the option order.

So perhaps we should start propagating the parentheses more, and
the documentation is the perfect place to do that.

Yours,
Laurenz Albe

#10Robert Treat
xzilla@users.sourceforge.net
In reply to: Laurenz Albe (#9)
Re: Clarify VACUUM FULL exclusion in total_vacuum_time docs

On Tue, Jul 15, 2025 at 1:44 AM Laurenz Albe <laurenz.albe@cybertec.at> wrote:

On Tue, 2025-07-15 at 01:51 +0900, Fujii Masao wrote:

On 2025/06/18 6:53, Robert Treat wrote:

I think the more cases where you document this behavior (and I do like
the idea of documenting it for total_vacuum_time), the more one is
likely to think that places where it is not documented operate
differently. To that end, I think documenting it for
n_ins_since_vacuum as well is a good idea, but I don't feel strongly
that it needs to be backpatched; the old documentation wasn't wrong
per se, rather this is a documentation improvement as a result of new
development.

Agreed. The attached patch updates the docs to clarify that both
total_vacuum_time and n_ins_since_vacuum exclude VACUUM FULL.

Unless there are any objections, I'll commit this to master and
back-patch it to v18 only.

I think the patch is good.

One question for me is whether we should use "VACUUM (FULL)" rather
than "VACUUM FULL".

On the one hand, the documentation (and most users) still use the
old syntax without parentheses almost everywhere.

On the other hand, reading the VACUUM reference page, I get the
feeling that the new syntax with parentheses should be favored.
After all, the old syntax doesn't support any of the recently
added options and restricts the option order.

So perhaps we should start propagating the parentheses more, and
the documentation is the perfect place to do that.

That might make sense, but how far we want to take it in the first go
around seems like a discussion that is best put forth in a separate
thread / patch.

Robert Treat
https://xzilla.net

#11Laurenz Albe
laurenz.albe@cybertec.at
In reply to: Robert Treat (#10)
Re: Clarify VACUUM FULL exclusion in total_vacuum_time docs

On Tue, 2025-07-15 at 10:27 -0400, Robert Treat wrote:

On the other hand, reading the VACUUM reference page, I get the

feeling that the new syntax with parentheses should be favored.
After all, the old syntax doesn't support any of the recently
added options and restricts the option order.

So perhaps we should start propagating the parentheses more, and
the documentation is the perfect place to do that.

That might make sense, but how far we want to take it in the first go
around seems like a discussion that is best put forth in a separate
thread / patch.

Makes sense, and I have no objection to the patch as it is.

Yours,
Laurenz Albe

#12Fujii Masao
masao.fujii@gmail.com
In reply to: Robert Treat (#10)
Re: Clarify VACUUM FULL exclusion in total_vacuum_time docs

On 2025/07/15 23:27, Robert Treat wrote:

On Tue, Jul 15, 2025 at 1:44 AM Laurenz Albe <laurenz.albe@cybertec.at> wrote:

On Tue, 2025-07-15 at 01:51 +0900, Fujii Masao wrote:

On 2025/06/18 6:53, Robert Treat wrote:

I think the more cases where you document this behavior (and I do like
the idea of documenting it for total_vacuum_time), the more one is
likely to think that places where it is not documented operate
differently. To that end, I think documenting it for
n_ins_since_vacuum as well is a good idea, but I don't feel strongly
that it needs to be backpatched; the old documentation wasn't wrong
per se, rather this is a documentation improvement as a result of new
development.

Agreed. The attached patch updates the docs to clarify that both
total_vacuum_time and n_ins_since_vacuum exclude VACUUM FULL.

Unless there are any objections, I'll commit this to master and
back-patch it to v18 only.

Done, thanks!

I think the patch is good.

One question for me is whether we should use "VACUUM (FULL)" rather
than "VACUUM FULL".

On the one hand, the documentation (and most users) still use the
old syntax without parentheses almost everywhere.

On the other hand, reading the VACUUM reference page, I get the
feeling that the new syntax with parentheses should be favored.
After all, the old syntax doesn't support any of the recently
added options and restricts the option order.

So perhaps we should start propagating the parentheses more, and
the documentation is the perfect place to do that.

I'm not sure if changing it to "VACUUM (FULL)" is a good idea.
In several places, the docs use "VACUUM FULL" to refer to the full vacuum
operation as a name, rather than the exact command syntax. Changing
all instances to "VACUUM (FULL)" might make the docs harder to read for
users already familiar with the term "VACUUM FULL".

That said, if many others prefer switching to "VACUUM (FULL)",
I have no strong objection. In that case, we might also consider
changing "EXPLAIN ANALYZE" to "EXPLAIN (ANALYZE)" for the same reason.

That might make sense, but how far we want to take it in the first go
around seems like a discussion that is best put forth in a separate
thread / patch.

+1

Regards,

--
Fujii Masao
NTT DATA Japan Corporation