pg.ddx.io  pgsql-hackers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Nathan Bossart <nathandbossart@gmail.com>
To: Sami Imseih <samimseih@gmail.com>
Cc: Andres Freund <andres@anarazel.de>
Cc: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Alexander Lakhin <exclusion@gmail.com>
Cc: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>
Cc: Robert Treat <rob@xzilla.net>
Cc: satyanarlapuram@gmail.com, pgsql-hackers <pgsql-hackers@postgresql.org>
Cc: tndrwang@gmail.com
Subject: Re: Add pg_stat_autovacuum_priority
Date: Wed, 8 Apr 2026 16:48:31 -0500
Message-ID: <adbNL1puSbBi8nMo@nathan> (raw)
In-Reply-To: <CAA5RZ0uL1ukKvV0Gwgok9ut_203q_E_tzBrwhDAuJCKVNwWZVw@mail.gmail.com>
References: <adQsdvPPNviWMCXb@nathan>
	<5684f479-858e-4c5d-b8f5-bcf05de1f909@gmail.com>
	<3077290.1775668665@sss.pgh.pa.us>
	<adaWuTR7oCKodH7k@nathan>
	<3097984.1775674400@sss.pgh.pa.us>
	<adan_E0o69p81lIj@nathan>
	<3101163.1775676098@sss.pgh.pa.us>
	<u3akkfw3vaocviudt6f7ft4kxjc2273rh3tfhz5rfwg6jrcc2t@wurwws6wgjjz>
	<adbHYQMZ0pHQttWa@nathan>
	<CAA5RZ0uL1ukKvV0Gwgok9ut_203q_E_tzBrwhDAuJCKVNwWZVw@mail.gmail.com>

On Wed, Apr 08, 2026 at 04:33:00PM -0500, Sami Imseih wrote:
>> On Wed, Apr 08, 2026 at 04:40:03PM -0400, Andres Freund wrote:
>> > Note that the whole cached state does automatically get reset at the end of
>> > the transaction (AtEOXact_PgStat()->pgstat_clear_snapshot()), just like it did
>> > before the shmem stats stuff.
>>
>> I see a lot of memory used for the pgStatEntryRefHash table, too (e.g., ~16
>> MB for 100K tables).  What's interesting is that I cannot reproduce similar
>> usage with views like pg_stat_all_tables.  If memory was not a concern, I
>> think the "bool *may_free" idea would be fine.
> 
> Instead of may_free, which is invasive, what about pgstat_fetch_entry_nocache
> which can be called by 2 new APIs pgstat_fetch_stat_tabentry_nocache() and
> pgstat_fetch_stat_tabentry_nocache_ext(). This way a caller that uses
> these will be required to pfree?

This might help avoid memory usage within a snapshot, but as Andres notes,
this gets released automatically at the end of the transaction.

For a database with 100K tables, here's what I see before calling the view:

          name          | used_bytes
------------------------+------------
 PgStat Shared Ref Hash |       8576
 PgStat Shared Ref      |       2960
 PgStat Pending         |       4712
(3 rows)

After calling the view but before committing the transaction, I see this:

          name          | used_bytes
------------------------+------------
 PgStat Snapshot        |    4194688
 PgStat Shared Ref Hash |    4194688
 PgStat Shared Ref      |    8048240
 PgStat Pending         |       3064
(4 rows)

And after committing, I see:

          name          | used_bytes
------------------------+------------
 PgStat Shared Ref Hash |    4194688
 PgStat Shared Ref      |    8048240
 PgStat Pending         |        360
(3 rows)

-- 
nathan





view thread (61+ messages)  latest in thread

Message-ID: <adbNL1puSbBi8nMo@nathan>
Permalink:  ../adbNL1puSbBi8nMo@nathan/
Also on:    postgresql.org/message-id/adbNL1puSbBi8nMo@nathan

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-hackers@postgresql.org
  Cc: nathandbossart@gmail.com, samimseih@gmail.com, andres@anarazel.de, tgl@sss.pgh.pa.us, exclusion@gmail.com, bharath.rupireddyforpostgres@gmail.com, rob@xzilla.net, tndrwang@gmail.com
  Subject: Re: Add pg_stat_autovacuum_priority
  In-Reply-To: <adbNL1puSbBi8nMo@nathan>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox