From d8a97ccef96b4f4f5ff1398572de255f085612a7 Mon Sep 17 00:00:00 2001 From: Masahiko Sawada Date: Tue, 4 Jun 2024 06:17:25 +0900 Subject: [PATCH] Revive num_dead_tuples column of pg_stat_progress_vacuum. Commit 667e65aac3 changed both num_dead_tuples and max_dead_tuples columns to dead_tuple_bytes and max_dead_tuple_bytes columns, respectively. But as per discussion, the number of dead tuples collected still can provide meaningful insights for users. This change revives num_dead_tuples column of pg_stat_progress_vacuum view, but not include max_dead_tuples column as it is not predictable. XXX: bump catalog version. Reviewed-by: Discussion: https://postgr.es/m/ --- doc/src/sgml/monitoring.sgml | 9 +++++++++ src/backend/access/heap/vacuumlazy.c | 4 +++- src/backend/catalog/system_views.sql | 3 ++- src/include/commands/progress.h | 5 +++-- src/test/regress/expected/rules.out | 5 +++-- 5 files changed, 20 insertions(+), 6 deletions(-) diff --git a/doc/src/sgml/monitoring.sgml b/doc/src/sgml/monitoring.sgml index 053da8d6e4..062329553e 100644 --- a/doc/src/sgml/monitoring.sgml +++ b/doc/src/sgml/monitoring.sgml @@ -6268,6 +6268,15 @@ FROM pg_stat_get_backend_idset() AS backendid; + + + num_dead_tuples bigint + + + Number of dead tuples collected since the last index vacuum cycle. + + + indexes_total bigint diff --git a/src/backend/access/heap/vacuumlazy.c b/src/backend/access/heap/vacuumlazy.c index 8145ea8fc3..bed59b72c6 100644 --- a/src/backend/access/heap/vacuumlazy.c +++ b/src/backend/access/heap/vacuumlazy.c @@ -2887,7 +2887,9 @@ dead_items_add(LVRelState *vacrel, BlockNumber blkno, OffsetNumber *offsets, TidStoreSetBlockOffsets(dead_items, blkno, offsets, num_offsets); vacrel->dead_items_info->num_items += num_offsets; - /* update the memory usage report */ + /* update the progress information */ + pgstat_progress_update_param(PROGRESS_VACUUM_NUM_DEAD_TUPLES, + vacrel->dead_items_info->num_items); pgstat_progress_update_param(PROGRESS_VACUUM_DEAD_TUPLE_BYTES, TidStoreMemoryUsage(dead_items)); } diff --git a/src/backend/catalog/system_views.sql b/src/backend/catalog/system_views.sql index 53047cab5f..9880878c7f 100644 --- a/src/backend/catalog/system_views.sql +++ b/src/backend/catalog/system_views.sql @@ -1221,7 +1221,8 @@ CREATE VIEW pg_stat_progress_vacuum AS S.param2 AS heap_blks_total, S.param3 AS heap_blks_scanned, S.param4 AS heap_blks_vacuumed, S.param5 AS index_vacuum_count, S.param6 AS max_dead_tuple_bytes, S.param7 AS dead_tuple_bytes, - S.param8 AS indexes_total, S.param9 AS indexes_processed + S.param8 AS num_dead_tuples, S.param9 AS indexes_total, + S.param10 AS indexes_processed FROM pg_stat_get_progress_info('VACUUM') AS S LEFT JOIN pg_database D ON S.datid = D.oid; diff --git a/src/include/commands/progress.h b/src/include/commands/progress.h index 82a8fe6bd1..9f10b2c73f 100644 --- a/src/include/commands/progress.h +++ b/src/include/commands/progress.h @@ -25,8 +25,9 @@ #define PROGRESS_VACUUM_NUM_INDEX_VACUUMS 4 #define PROGRESS_VACUUM_MAX_DEAD_TUPLE_BYTES 5 #define PROGRESS_VACUUM_DEAD_TUPLE_BYTES 6 -#define PROGRESS_VACUUM_INDEXES_TOTAL 7 -#define PROGRESS_VACUUM_INDEXES_PROCESSED 8 +#define PROGRESS_VACUUM_NUM_DEAD_TUPLES 7 +#define PROGRESS_VACUUM_INDEXES_TOTAL 8 +#define PROGRESS_VACUUM_INDEXES_PROCESSED 9 /* Phases of vacuum (as advertised via PROGRESS_VACUUM_PHASE) */ #define PROGRESS_VACUUM_PHASE_SCAN_HEAP 1 diff --git a/src/test/regress/expected/rules.out b/src/test/regress/expected/rules.out index ef658ad740..820723f6fc 100644 --- a/src/test/regress/expected/rules.out +++ b/src/test/regress/expected/rules.out @@ -2052,8 +2052,9 @@ pg_stat_progress_vacuum| SELECT s.pid, s.param5 AS index_vacuum_count, s.param6 AS max_dead_tuple_bytes, s.param7 AS dead_tuple_bytes, - s.param8 AS indexes_total, - s.param9 AS indexes_processed + s.param8 AS num_dead_tuples, + s.param9 AS indexes_total, + s.param10 AS indexes_processed FROM (pg_stat_get_progress_info('VACUUM'::text) s(pid, datid, relid, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10, param11, param12, param13, param14, param15, param16, param17, param18, param19, param20) LEFT JOIN pg_database d ON ((s.datid = d.oid))); pg_stat_recovery_prefetch| SELECT stats_reset, -- 2.39.3