0001-Revive-num_dead_tuples-column-of-pg_stat_progress_va.patch
application/octet-stream
Filename: 0001-Revive-num_dead_tuples-column-of-pg_stat_progress_va.patch
Type: application/octet-stream
Part: 0
Patch
Format: format-patch
Series: patch 0001
Subject: Revive num_dead_tuples column of pg_stat_progress_vacuum.
| File | + | − |
|---|---|---|
| doc/src/sgml/monitoring.sgml | 9 | 0 |
| src/backend/access/heap/vacuumlazy.c | 3 | 1 |
| src/backend/catalog/system_views.sql | 2 | 1 |
| src/include/commands/progress.h | 3 | 2 |
| src/test/regress/expected/rules.out | 3 | 2 |
From d8a97ccef96b4f4f5ff1398572de255f085612a7 Mon Sep 17 00:00:00 2001
From: Masahiko Sawada <sawada.mshk@gmail.com>
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;
</para></entry>
</row>
+ <row>
+ <entry role="catalog_table_entry"><para role="column_definition">
+ <structfield>num_dead_tuples</structfield> <type>bigint</type>
+ </para>
+ <para>
+ Number of dead tuples collected since the last index vacuum cycle.
+ </para></entry>
+ </row>
+
<row>
<entry role="catalog_table_entry"><para role="column_definition">
<structfield>indexes_total</structfield> <type>bigint</type>
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