Doc: Fix misleading statement about VACUUM memory limits

In ec34040af I added a mention that there was no point in setting
maintenance_work_limit to anything higher than 1GB for vacuum, but that
was incorrect as ginInsertCleanup() also looks at what
maintenance_work_mem is set to during VACUUM and that's not limited to
1GB.

Here I attempt to make it more clear that the limitation is only around
the number of dead tuple identifiers that we can collect during VACUUM.

I've also added a note to autovacuum_work_mem to mention this limitation.
I didn't do that in ec34040af as I'd had some wrong-headed ideas about
just limiting the maximum value for that GUC to 1GB.

Author: David Rowley
Discussion: https://postgr.es/m/CAApHDvpGwOAvunp-E-bN_rbAs3hmxMoasm5pzkYDbf36h73s7w@mail.gmail.com
Backpatch-through: 9.6, same as ec34040af
This commit is contained in:
David Rowley 2021-08-09 16:45:35 +12:00
parent 4a3d806f38
commit deb6ffd4fd
1 changed files with 10 additions and 4 deletions

View File

@ -1894,10 +1894,9 @@ include_dir 'conf.d'
setting <xref linkend="guc-autovacuum-work-mem"/>.
</para>
<para>
Additionally, <command>VACUUM</command> is only able to utilize up to
a maximum of <literal>1GB</literal> of memory, so
<varname>maintenance_work_mem</varname> values higher than this have
no effect on <command>VACUUM</command>.
Note that for the collection of dead tuple identifiers,
<command>VACUUM</command> is only able to utilize up to a maximum of
<literal>1GB</literal> of memory.
</para>
</listitem>
</varlistentry>
@ -1921,6 +1920,13 @@ include_dir 'conf.d'
<filename>postgresql.conf</filename> file or on the server command
line.
</para>
<para>
For the collection of dead tuple identifiers, autovacuum is only able
to utilize up to a maximum of <literal>1GB</literal> of memory, so
setting <varname>autovacuum_work_mem</varname> to a value higher than
that has no effect on the number of dead tuples that autovacuum can
collect while scanning a table.
</para>
</listitem>
</varlistentry>