diff options
author | Melanie Plageman <melanieplageman@gmail.com> | 2025-03-03 14:42:00 -0500 |
---|---|---|
committer | Melanie Plageman <melanieplageman@gmail.com> | 2025-03-03 14:42:00 -0500 |
commit | 06eae9e6218ab2acf64ea497bad0360e4c90e32d (patch) | |
tree | c9346e7a784ad9dcd4947c65bf6abadc24ada853 /doc/src | |
parent | 35c8dd9e1176ae0c3cb060b0da9cb2bba925363c (diff) | |
download | postgresql-06eae9e6218ab2acf64ea497bad0360e4c90e32d.tar.gz postgresql-06eae9e6218ab2acf64ea497bad0360e4c90e32d.zip |
Trigger more frequent autovacuums with relallfrozen
Calculate the insert threshold for triggering an autovacuum of a
relation based on the number of unfrozen pages.
By only considering the unfrozen portion of the table when calculating
how many tuples to add to the insert threshold, we can trigger more
frequent vacuums of insert-heavy tables. This increases the chances of
vacuuming those pages when they still reside in shared buffers
This also increases the number of autovacuums triggered by tuples
inserted and not by wraparound risk. We prefer to freeze these pages
during insert-triggered autovacuums, as anti-wraparound vacuums are not
automatically canceled by conflicting lock requests.
We calculate the unfrozen percentage of the table using the recently
added (99f8f3fbbc8f) relallfrozen column of pg_class.
Author: Melanie Plageman <melanieplageman@gmail.com>
Reviewed-by: Nathan Bossart <nathandbossart@gmail.com>
Reviewed-by: Greg Sabino Mullane <htamfids@gmail.com>
Reviewed-by: Robert Treat <rob@xzilla.net>
Reviewed-by: wenhui qiu <qiuwenhuifx@gmail.com>
Discussion: https://postgr.es/m/flat/CAAKRu_aj-P7YyBz_cPNwztz6ohP%2BvWis%3Diz3YcomkB3NpYA--w%40mail.gmail.com
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/sgml/catalogs.sgml | 7 | ||||
-rw-r--r-- | doc/src/sgml/config.sgml | 15 |
2 files changed, 11 insertions, 11 deletions
diff --git a/doc/src/sgml/catalogs.sgml b/doc/src/sgml/catalogs.sgml index 9a21a0d6f15..fb050635551 100644 --- a/doc/src/sgml/catalogs.sgml +++ b/doc/src/sgml/catalogs.sgml @@ -2072,9 +2072,10 @@ SCRAM-SHA-256$<replaceable><iteration count></replaceable>:<replaceable>&l </para> <para> Number of pages that are marked all-frozen in the table's visibility - map. This is only an estimate and can be used along with - <structfield>relallvisible</structfield> for scheduling vacuums and - tuning <link linkend="runtime-config-vacuum-freezing">vacuum's freezing + map. This is only an estimate used for triggering autovacuums. It can + also be used along with <structfield>relallvisible</structfield> for + scheduling manual vacuums and tuning <link + linkend="runtime-config-vacuum-freezing">vacuum's freezing behavior</link>. It is updated by diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index e55700f35b8..d2fa5f7d1a9 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -8773,14 +8773,13 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv; </term> <listitem> <para> - Specifies a fraction of the table size to add to - <varname>autovacuum_vacuum_insert_threshold</varname> - when deciding whether to trigger a <command>VACUUM</command>. - The default is <literal>0.2</literal> (20% of table size). - This parameter can only be set in the <filename>postgresql.conf</filename> - file or on the server command line; - but the setting can be overridden for individual tables by - changing table storage parameters. + Specifies a fraction of the unfrozen pages in the table to add to + <varname>autovacuum_vacuum_insert_threshold</varname> when deciding + whether to trigger a <command>VACUUM</command>. The default is + <literal>0.2</literal> (20% of unfrozen pages in table). This + parameter can only be set in the <filename>postgresql.conf</filename> + file or on the server command line; but the setting can be overridden + for individual tables by changing table storage parameters. </para> </listitem> </varlistentry> |