0001-autovacuum-score-logging-and-sort-enable-disable.txt
text/plain
Filename: 0001-autovacuum-score-logging-and-sort-enable-disable.txt
Type: text/plain
Part: 0
From c24eeeb074acfb790fe44b60b2177482b9afe3c3 Mon Sep 17 00:00:00 2001
From: Ubuntu <ubuntu@ip-172-31-46-230.ec2.internal>
Date: Tue, 4 Nov 2025 15:55:40 +0000
Subject: [PATCH 1/1] autovacuum score logging and sort enable/disable
---
src/backend/postmaster/autovacuum.c | 7 ++++++-
src/backend/utils/misc/guc_parameters.dat | 10 ++++++++++
src/backend/utils/misc/guc_tables.c | 6 ++++++
src/include/postmaster/autovacuum.h | 8 ++++++++
4 files changed, 30 insertions(+), 1 deletion(-)
diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c
index e48bb06253b..ca9c5c615dc 100644
--- a/src/backend/postmaster/autovacuum.c
+++ b/src/backend/postmaster/autovacuum.c
@@ -333,6 +333,8 @@ static WorkerInfo MyWorkerInfo = NULL;
/* PID of launcher, valid only in worker while shutting down */
int AutovacuumLauncherPid = 0;
+int debug_autovacuum_sort = DEBUG_AUTOVACUUM_SORT_ON;
+
static Oid do_start_worker(void);
static void ProcessAutoVacLauncherInterrupts(void);
pg_noreturn static void AutoVacLauncherShutdown(void);
@@ -2083,6 +2085,7 @@ do_autovacuum(void)
table->oid = relid;
table->score = score;
+ elog(LOG, "adding table:%s,%lf,av=%d,aa=%d", get_rel_name(table->oid), score, dovacuum, doanalyze);
tables_to_process = lappend(tables_to_process, table);
}
@@ -2184,6 +2187,7 @@ do_autovacuum(void)
table->oid = relid;
table->score = score;
+ elog(LOG, "adding table:%s,%lf,av=1,aa=0", get_rel_name(table->oid), score);
tables_to_process = lappend(tables_to_process, table);
}
@@ -2309,7 +2313,8 @@ do_autovacuum(void)
MemoryContextSwitchTo(AutovacMemCxt);
}
- list_sort(tables_to_process, TableToProcessComparator);
+ if (debug_autovacuum_sort == DEBUG_AUTOVACUUM_SORT_ON)
+ list_sort(tables_to_process, TableToProcessComparator);
/*
* Optionally, create a buffer access strategy object for VACUUM to use.
diff --git a/src/backend/utils/misc/guc_parameters.dat b/src/backend/utils/misc/guc_parameters.dat
index d6fc8333850..2bf9ce4ed27 100644
--- a/src/backend/utils/misc/guc_parameters.dat
+++ b/src/backend/utils/misc/guc_parameters.dat
@@ -3445,6 +3445,16 @@
options => 'debug_parallel_query_options',
},
+{ name => 'debug_autovacuum_sort', type => 'enum', context => 'PGC_USERSET', group => 'DEVELOPER_OPTIONS',
+ short_desc => 'Enables/Disables the autovacuum sort of eligible tables.',
+ long_desc => 'This can be useful for testing the effect of sorting eligible tables in autovacuum.',
+ flags => 'GUC_NOT_IN_SAMPLE | GUC_EXPLAIN',
+ variable => 'debug_autovacuum_sort',
+ boot_val => 'DEBUG_AUTOVACUUM_SORT_ON',
+ options => 'debug_autovacuum_sort_options',
+},
+
+
{ name => 'password_encryption', type => 'enum', context => 'PGC_USERSET', group => 'CONN_AUTH_AUTH',
short_desc => 'Chooses the algorithm for encrypting passwords.',
variable => 'Password_encryption',
diff --git a/src/backend/utils/misc/guc_tables.c b/src/backend/utils/misc/guc_tables.c
index 00c8376cf4d..aaa93d35187 100644
--- a/src/backend/utils/misc/guc_tables.c
+++ b/src/backend/utils/misc/guc_tables.c
@@ -404,6 +404,12 @@ static const struct config_enum_entry debug_parallel_query_options[] = {
{NULL, 0, false}
};
+static const struct config_enum_entry debug_autovacuum_sort_options[] = {
+ {"off", DEBUG_AUTOVACUUM_SORT_OFF, false},
+ {"on", DEBUG_AUTOVACUUM_SORT_ON, false},
+ {NULL, 0, false}
+};
+
static const struct config_enum_entry plan_cache_mode_options[] = {
{"auto", PLAN_CACHE_MODE_AUTO, false},
{"force_generic_plan", PLAN_CACHE_MODE_FORCE_GENERIC_PLAN, false},
diff --git a/src/include/postmaster/autovacuum.h b/src/include/postmaster/autovacuum.h
index 023ac6d5fa8..32688784a06 100644
--- a/src/include/postmaster/autovacuum.h
+++ b/src/include/postmaster/autovacuum.h
@@ -25,6 +25,14 @@ typedef enum
AVW_BRINSummarizeRange,
} AutoVacuumWorkItemType;
+/* possible values for debug_autovacuum_sort */
+typedef enum
+{
+ DEBUG_AUTOVACUUM_SORT_OFF,
+ DEBUG_AUTOVACUUM_SORT_ON,
+} DebugAutovacuumSortMode;
+
+extern PGDLLIMPORT int debug_autovacuum_sort;
/* GUC variables */
extern PGDLLIMPORT bool autovacuum_start_daemon;
--
2.43.0