pgsql: Move various prechecks from vacuum() into ExecVacuum()

From: David Rowley <drowley(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Move various prechecks from vacuum() into ExecVacuum()
Date: 2023-04-06 03:45:19
Message-ID: E1pkGYo-001bQz-C6@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Move various prechecks from vacuum() into ExecVacuum()

vacuum() is used for both the VACUUM command and for autovacuum. There
were many prechecks being done inside vacuum() that were just not relevant
to autovacuum. Let's move the bulk of these into ExecVacuum() so that
they're only executed when running the VACUUM command. This removes a
small amount of overhead when autovacuum vacuums a table.

While we are at it, allocate VACUUM's BufferAccessStrategy in ExecVacuum()
and pass it into vacuum() instead of expecting vacuum() to make it if it's
not already made by the calling function. To make this work, we need to
create the vacuum memory context slightly earlier, so we now need to pass
that down to vacuum() so that it's available for use in other memory
allocations.

Author: Melanie Plageman
Reviewed-by: David Rowley
Discussion: https://postgr.es/m/20230405211534.4skgskbilnxqrmxg@awork3.anarazel.de

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/b9b125b9c14381c4d04a446e335bb2da5f602596

Modified Files
--------------
src/backend/commands/vacuum.c | 154 ++++++++++++++++++------------------
src/backend/postmaster/autovacuum.c | 12 ++-
src/include/commands/vacuum.h | 3 +-
3 files changed, 91 insertions(+), 78 deletions(-)

Responses

Browse pgsql-committers by date

  From Date Subject
Next Message Michael Paquier 2023-04-06 04:04:17 Re: pgsql: Move various prechecks from vacuum() into ExecVacuum()
Previous Message Andres Freund 2023-04-06 02:00:54 pgsql: Convert many uses of ReadBuffer[Extended](P_NEW) to ExtendBuffer