public inbox for [email protected]  
help / color / mirror / Atom feed
From: Shenavai, Manuel <[email protected]>
To: Torsten Förtsch <[email protected]>
Cc: [email protected] <[email protected]>
Subject: RE: Monitoring DB size
Date: Tue, 16 Jul 2024 11:38:40 +0000
Message-ID: <AM9PR02MB74100B56669CD7D60B3D3363E8A22@AM9PR02MB7410.eurprd02.prod.outlook.com> (raw)
In-Reply-To: <CAKkG4_nSEeOB4X-uThk6mTiBGU37swA2j=T8h82tnkSMTB+8aw@mail.gmail.com>
References: <AM9PR02MB741013EB8C5698CD8C44387CE8A12@AM9PR02MB7410.eurprd02.prod.outlook.com>
	<CAKkG4_nSEeOB4X-uThk6mTiBGU37swA2j=T8h82tnkSMTB+8aw@mail.gmail.com>

Thanks for the suggestion. I think this will not help us to differentiate between live tuples, dead tuples and free space.

Best regards,
Manuel

From: Torsten Förtsch <[email protected]>
Sent: 15 July 2024 18:59
To: Shenavai, Manuel <[email protected]>
Cc: [email protected]
Subject: Re: Monitoring DB size

Slightly different approach than you might expect. For larger DBs you'd likely want to exclude base and instead use pg_database_size() in addition.

postgres(2454884) =# create temp table xx(dir text, sz bigint);
CREATE TABLE
Time: 2.587 ms
postgres(2454884) =# copy xx(sz, dir) from program 'du -s *';
COPY 21
Time: 3.793 ms
postgres(2454884) =# select * from xx;
        dir          |  sz
----------------------+-------
base                 | 26280
global               |   568
pg_commit_ts         |    12
pg_dynshmem          |     4
pg_logical           |    16
pg_multixact         |    28
pg_notify            |     4
pg_replslot          |     4
pg_serial            |     4
pg_snapshots         |     4
pg_stat              |     4
pg_stat_tmp          |     4
pg_subtrans          |    12
pg_tblspc            |     4
pg_twophase          |     4
PG_VERSION           |     4
pg_wal               | 16392
pg_xact              |    12
postgresql.auto.conf |     4
postmaster.opts      |     4
postmaster.pid       |     4
(21 rows)

Time: 0.282 ms

On Mon, Jul 15, 2024 at 4:42 PM Shenavai, Manuel <[email protected]<mailto:[email protected]>> wrote:
Hi everyone,

we currently capture the db size (pg_database_size) which gives the “Disk space used by the database with the specified name”. Is it possible to further split this data how much space is occupied by live tuples, dead tuples and free space?

We would like to have something like:
DB Size: 200 MB, live tuple 100MB, Dead Tuple: 20 MB, free space 80MB

Is this possible?

Best regards,
Manuel


view thread (6+ messages)  latest in thread

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: [email protected]
  Cc: [email protected], [email protected], [email protected]
  Subject: RE: Monitoring DB size
  In-Reply-To: <AM9PR02MB74100B56669CD7D60B3D3363E8A22@AM9PR02MB7410.eurprd02.prod.outlook.com>

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

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