From c24eeeb074acfb790fe44b60b2177482b9afe3c3 Mon Sep 17 00:00:00 2001 From: Ubuntu 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