Add target "slru" to pg_stat_reset_shared()
Currently, pg_stat_reset_shared() cannot reset the counters in the view
pg_stat_slru even if it is a type of shared stats. This patch adds
support for a new value in pg_stat_reset_shared(), called "slru", able
to do that. Note that pg_stat_reset_shared(NULL) also resets SLRU
counters.
There may be a point in removing pg_stat_reset_slru() that was
introduced in 28cac71bd3
(v13~) as the new option overlaps with this
function, but we would lose the ability to reset individual SLRU
counters. This is left for future reconsideration.
Author: Atsushi Torikoshi
Discussion: https://postgr.es/m/e3c25d72e81378e7b64f3c52e0306fc9@oss.nttdata.com
This commit is contained in:
parent
816f10564a
commit
2e8a0edc2a
|
@ -4749,6 +4749,12 @@ description | Waiting for a newly initialized WAL file to reach durable storage
|
|||
the <structname>pg_stat_recovery_prefetch</structname> view.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<literal>slru</literal>: Reset all the counters shown in the
|
||||
<structname>pg_stat_slru</structname> view.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<literal>wal</literal>: Reset all the counters shown in the
|
||||
|
|
|
@ -1695,6 +1695,7 @@ pg_stat_reset_shared(PG_FUNCTION_ARGS)
|
|||
pgstat_reset_of_kind(PGSTAT_KIND_CHECKPOINTER);
|
||||
pgstat_reset_of_kind(PGSTAT_KIND_IO);
|
||||
XLogPrefetchResetStats();
|
||||
pgstat_reset_of_kind(PGSTAT_KIND_SLRU);
|
||||
pgstat_reset_of_kind(PGSTAT_KIND_WAL);
|
||||
|
||||
PG_RETURN_VOID();
|
||||
|
@ -1712,13 +1713,15 @@ pg_stat_reset_shared(PG_FUNCTION_ARGS)
|
|||
pgstat_reset_of_kind(PGSTAT_KIND_IO);
|
||||
else if (strcmp(target, "recovery_prefetch") == 0)
|
||||
XLogPrefetchResetStats();
|
||||
else if (strcmp(target, "slru") == 0)
|
||||
pgstat_reset_of_kind(PGSTAT_KIND_SLRU);
|
||||
else if (strcmp(target, "wal") == 0)
|
||||
pgstat_reset_of_kind(PGSTAT_KIND_WAL);
|
||||
else
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
|
||||
errmsg("unrecognized reset target: \"%s\"", target),
|
||||
errhint("Target must be \"archiver\", \"bgwriter\", \"checkpointer\", \"io\", \"recovery_prefetch\", or \"wal\".")));
|
||||
errhint("Target must be \"archiver\", \"bgwriter\", \"checkpointer\", \"io\", \"recovery_prefetch\", \"slru\", or \"wal\".")));
|
||||
|
||||
PG_RETURN_VOID();
|
||||
}
|
||||
|
|
|
@ -960,6 +960,21 @@ SELECT stats_reset > :'recovery_prefetch_reset_ts'::timestamptz FROM pg_stat_rec
|
|||
(1 row)
|
||||
|
||||
SELECT stats_reset AS recovery_prefetch_reset_ts FROM pg_stat_recovery_prefetch \gset
|
||||
-- Test that reset_shared with slru specified as the stats type works
|
||||
SELECT max(stats_reset) AS slru_reset_ts FROM pg_stat_slru \gset
|
||||
SELECT pg_stat_reset_shared('slru');
|
||||
pg_stat_reset_shared
|
||||
----------------------
|
||||
|
||||
(1 row)
|
||||
|
||||
SELECT max(stats_reset) > :'slru_reset_ts'::timestamptz FROM pg_stat_slru;
|
||||
?column?
|
||||
----------
|
||||
t
|
||||
(1 row)
|
||||
|
||||
SELECT max(stats_reset) AS slru_reset_ts FROM pg_stat_slru \gset
|
||||
-- Test that reset_shared with wal specified as the stats type works
|
||||
SELECT stats_reset AS wal_reset_ts FROM pg_stat_wal \gset
|
||||
SELECT pg_stat_reset_shared('wal');
|
||||
|
@ -1007,6 +1022,12 @@ SELECT stats_reset > :'recovery_prefetch_reset_ts'::timestamptz FROM pg_stat_rec
|
|||
t
|
||||
(1 row)
|
||||
|
||||
SELECT max(stats_reset) > :'slru_reset_ts'::timestamptz FROM pg_stat_slru;
|
||||
?column?
|
||||
----------
|
||||
t
|
||||
(1 row)
|
||||
|
||||
SELECT stats_reset > :'wal_reset_ts'::timestamptz FROM pg_stat_wal;
|
||||
?column?
|
||||
----------
|
||||
|
@ -1016,7 +1037,7 @@ SELECT stats_reset > :'wal_reset_ts'::timestamptz FROM pg_stat_wal;
|
|||
-- Test error case for reset_shared with unknown stats type
|
||||
SELECT pg_stat_reset_shared('unknown');
|
||||
ERROR: unrecognized reset target: "unknown"
|
||||
HINT: Target must be "archiver", "bgwriter", "checkpointer", "io", "recovery_prefetch", or "wal".
|
||||
HINT: Target must be "archiver", "bgwriter", "checkpointer", "io", "recovery_prefetch", "slru", or "wal".
|
||||
-- Test that reset works for pg_stat_database
|
||||
-- Since pg_stat_database stats_reset starts out as NULL, reset it once first so we have something to compare it to
|
||||
SELECT pg_stat_reset();
|
||||
|
|
|
@ -482,6 +482,12 @@ SELECT pg_stat_reset_shared('recovery_prefetch');
|
|||
SELECT stats_reset > :'recovery_prefetch_reset_ts'::timestamptz FROM pg_stat_recovery_prefetch;
|
||||
SELECT stats_reset AS recovery_prefetch_reset_ts FROM pg_stat_recovery_prefetch \gset
|
||||
|
||||
-- Test that reset_shared with slru specified as the stats type works
|
||||
SELECT max(stats_reset) AS slru_reset_ts FROM pg_stat_slru \gset
|
||||
SELECT pg_stat_reset_shared('slru');
|
||||
SELECT max(stats_reset) > :'slru_reset_ts'::timestamptz FROM pg_stat_slru;
|
||||
SELECT max(stats_reset) AS slru_reset_ts FROM pg_stat_slru \gset
|
||||
|
||||
-- Test that reset_shared with wal specified as the stats type works
|
||||
SELECT stats_reset AS wal_reset_ts FROM pg_stat_wal \gset
|
||||
SELECT pg_stat_reset_shared('wal');
|
||||
|
@ -495,6 +501,7 @@ SELECT stats_reset > :'archiver_reset_ts'::timestamptz FROM pg_stat_archiver;
|
|||
SELECT stats_reset > :'bgwriter_reset_ts'::timestamptz FROM pg_stat_bgwriter;
|
||||
SELECT stats_reset > :'checkpointer_reset_ts'::timestamptz FROM pg_stat_checkpointer;
|
||||
SELECT stats_reset > :'recovery_prefetch_reset_ts'::timestamptz FROM pg_stat_recovery_prefetch;
|
||||
SELECT max(stats_reset) > :'slru_reset_ts'::timestamptz FROM pg_stat_slru;
|
||||
SELECT stats_reset > :'wal_reset_ts'::timestamptz FROM pg_stat_wal;
|
||||
|
||||
-- Test error case for reset_shared with unknown stats type
|
||||
|
|
Loading…
Reference in New Issue