Re: doc: fix pg_stat_autovacuum_scores threshold wording
Chao Li <li.evan.chao@gmail.com>
From: Chao Li <li.evan.chao@gmail.com>
To: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Cc: pgsql-hackers@lists.postgresql.org,
nathandbossart@gmail.com
Date: 2026-06-25T06:03:00Z
Lists: pgsql-hackers
> On Jun 25, 2026, at 11:45, Kyotaro Horiguchi <horikyota.ntt@gmail.com> wrote: > > Hello, > > At Thu, 25 Jun 2026 10:44:23 +0800, Chao Li <li.evan.chao@gmail.com> wrote in >> While testing “[d7965d65f] Add rudimentary table prioritization to autovacuum”, I noticed a small doc issue. >> >> In monitoring.sgml, it states: >> ``` >> <row> >> <entry role="catalog_table_entry"><para role="column_definition"> >> <structfield>vacuum_score</structfield> <type>double precision</type> >> </para> >> <para> >> Vacuum component score. Scores greater than or equal to >> <xref linkend="guc-autovacuum-vacuum-score-weight"/> indicate that >> autovacuum would vacuum the table (unless autovacuum is disabled). >> </para></entry> >> </row> >> ``` > > If I understand this correctly, aren't the *_score_weight settings > used to prioritize candidate tables, rather than to determine whether > a table needs vacuuming or analyzing in the first place? > > Regards, > > -- > Kyotaro Horiguchi > NTT Open Source Software Center Yes, I agree that the *_score_weight settings are used for prioritizing candidate tables, not for deciding eligibility directly. I actually took time to try to understand where the current wording may have come from. For example, for vacuum_score, the code does: ``` /* Determine if this table needs vacuum, and update the score. */ scores->vac = (double) vactuples / Max(vacthresh, 1); scores->vac *= autovacuum_vacuum_score_weight; scores->max = Max(scores->max, scores->vac); if (av_enabled && vactuples > vacthresh) *dovacuum = true; ``` So, dovacuum is determined by "vactuples > vacthresh", in other words, when vactuples / vacthresh > 1, dovacuum is true. Let’s ignore av_enabled here. Then, the score is computed roughly as ``` scores->vac = (vactuples / vacthresh) * autovacuum_vacuum_score_weight ``` So when (vactuples / vacthresh) > 1, the score > autovacuum_vacuum_score_weight. I guess that may be how the current wording came from. But it seems a bit indirect to describe it that way, because the weight itself does not determine if autovacuum would vacuum or analyze the table. Rewriting the doc more broadly would be a larger change. This small patch is only meant to avoid the confusion shown by the test earlier, where the score is equal to the weight but do_vacuum is false. Best regards, -- Chao Li (Evan) HighGo Software Co., Ltd. https://www.highgo.com/
Commits
-
doc: Fix pg_stat_autovacuum_scores descriptions.
- ba7a65c5c5aa 19 (unreleased) landed
- 644026560624 master landed