Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sTP2t-00Ftt7-VU for pgsql-general@arkaria.postgresql.org; Mon, 15 Jul 2024 16:59:28 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1sTP2r-00Bd6O-Th for pgsql-general@arkaria.postgresql.org; Mon, 15 Jul 2024 16:59:25 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sTP2r-00Bd6F-HK for pgsql-general@lists.postgresql.org; Mon, 15 Jul 2024 16:59:25 +0000 Received: from mail-lf1-x135.google.com ([2a00:1450:4864:20::135]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sTP2o-002GfT-UP for pgsql-general@lists.postgresql.org; Mon, 15 Jul 2024 16:59:24 +0000 Received: by mail-lf1-x135.google.com with SMTP id 2adb3069b0e04-52ea952ce70so4829668e87.3 for ; Mon, 15 Jul 2024 09:59:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1721062762; x=1721667562; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=fXrkAfD6yn+4MiRc7Ar3l4J1V+DlGyMKGDBSsmKYow0=; b=VD9X6R6YtpQUF0xDAwVfsnTISOWNkHNE3D02ypgMOXCW6SeDChrEMC4JrhvUNSAV0P fJyplojaj2g6KpZM1IMkaTATshs+yQkrB+VMw5NJPlO1j8RYYDn1drsG8OUy88e4Gp/D AH8BroL9zguA70hjMDVmw6amgexYK4SMvOCQGU3dXWRJnOs8dsc4r7I5rm+GygBlYyDS ZixSHChZDBc0qXgsR0efU4fvZ9fT1husesaxser0R/COHkvfk4EaCDz5Pr/NCPYuQg+1 N4Ty0fHMmc8VpQ6HU9o8mUDpkggSiCJyrIgJWPnTk4SBqj/QW7AOQU925EilsbkqEeNU M89A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721062762; x=1721667562; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=fXrkAfD6yn+4MiRc7Ar3l4J1V+DlGyMKGDBSsmKYow0=; b=F3+uZnUvKB8/qWlRxmi5C3i/mOWxlSXiESpt6RzFMa7GJo+PthU5EN/05/dCfOOlwc 3ZAGJq88J+LKCCRBlqA5gvCpZApJ/M1lYO08RTosLATjtmpDbD6FzSVHN2RSNJQfgBtL uMTuooNts9LIIkbp7SQsir+GzLcj5kWHit7ojtHOfTh8UAktxKJMGAZUvM7Pzj9FPtIl Xl0FPUpjh4o+Tv6X6aguBDvFPhuPcgKyqSnIGSMQC5qcLCTCPIj7SA030fupoS30t6/s 3Qtm3Vzjw6KlgusTIxJegehdAZ4EHvI3ASUEL6rydWbwJhDrpu8EjybagTIyBdE88Kck RoCg== X-Gm-Message-State: AOJu0YwHz9OQl+YbhJHmX+dbRxLaJ5QMCPFGUf2m+j0sraOjm+b49szG uuvx6QVJrsa+K0a/J7EudNb+ZLhq7qz/6NE2b7OiLYV9+fw7GvwD2fq7pNxLlxPFQKofCVt5iwf rpOCEhxtNjhthrXToLyvO2FU1eg== X-Google-Smtp-Source: AGHT+IEsOBCJqN7acEKVtV7pwMmJ8Z++7yKERy7f/lxqGzyGyBXalOQnmNqXXprK1tnwv+9GriygnQk13WAbVKW+s0A= X-Received: by 2002:a05:6512:1150:b0:52c:e728:cca1 with SMTP id 2adb3069b0e04-52ede1c8464mr52792e87.39.1721062761540; Mon, 15 Jul 2024 09:59:21 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: =?UTF-8?Q?Torsten_F=C3=B6rtsch?= Date: Mon, 15 Jul 2024 18:59:04 +0200 Message-ID: Subject: Re: Monitoring DB size To: "Shenavai, Manuel" Cc: "pgsql-general@lists.postgresql.org" Content-Type: multipart/alternative; boundary="00000000000089b74b061d4c2681" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000089b74b061d4c2681 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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) =3D# create temp table xx(dir text, sz bigint); CREATE TABLE Time: 2.587 ms postgres(2454884) =3D# copy xx(sz, dir) from program 'du -s *'; COPY 21 Time: 3.793 ms postgres(2454884) =3D# 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=E2=80=AFPM Shenavai, Manuel wrote: > Hi everyone, > > > > we currently capture the db size (pg_database_size) which gives the =E2= =80=9CDisk > space used by the database with the specified name=E2=80=9D. Is it possib= le 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 > --00000000000089b74b061d4c2681 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+PGRpdj5TbGlnaHRseSBkaWZmZXJlbnQgYXBwcm9hY2ggdGhhbiB5b3Ug bWlnaHQgZXhwZWN0LiBGb3IgbGFyZ2VyIERCcyB5b3UmIzM5O2QgbGlrZWx5IHdhbnQgdG8gZXhj bHVkZSBiYXNlIGFuZCBpbnN0ZWFkIHVzZSBwZ19kYXRhYmFzZV9zaXplKCkgaW4gYWRkaXRpb24u PC9kaXY+PGJyPjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5Om1vbm9zcGFjZSI+PHNwYW4g c3R5bGU9ImNvbG9yOnJnYigwLDAsMCkiPnBvc3RncmVzKDI0NTQ4ODQpID0jIGNyZWF0ZSB0ZW1w IHRhYmxlIHh4KGRpciB0ZXh0LCBzeiBiaWdpbnQpOyDCoMKgwqDCoMKgwqDCoMKgwqA8L3NwYW4+ PGJyPkNSRUFURSBUQUJMRQ0KPGJyPlRpbWU6IDIuNTg3IG1zDQo8YnI+PHNwYW4gc3R5bGU9ImNv bG9yOnJnYigwLDAsMCkiPnBvc3RncmVzKDI0NTQ4ODQpID0jIGNvcHkgeHgoc3osIGRpcikgZnJv bSBwcm9ncmFtICYjMzk7ZHUgLXMgKiYjMzk7OyDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoDwvc3Bhbj48YnI+Q09QWSAyMQ0KPGJyPlRpbWU6IDMuNzkz IG1zDQo8YnI+PHNwYW4gc3R5bGU9ImNvbG9yOnJnYigwLDAsMCkiPnBvc3RncmVzKDI0NTQ4ODQp ID0jIHNlbGVjdCAqIGZyb20geHg7IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgPC9zcGFuPjxicj4gwqDCoMKgwqDCoMKgwqDCoGRpciDCoMKgwqDCoMKg wqDCoMKgwqB8IMKgc3ogwqDCoMKgPGJyPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQ0K PGJyPiBiYXNlIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCAyNjI4MA0KPGJyPiBn bG9iYWwgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHwgwqDCoDU2OA0KPGJyPiBwZ19jb21t aXRfdHMgwqDCoMKgwqDCoMKgwqDCoHwgwqDCoMKgMTINCjxicj4gcGdfZHluc2htZW0gwqDCoMKg wqDCoMKgwqDCoMKgfCDCoMKgwqDCoDQNCjxicj4gcGdfbG9naWNhbCDCoMKgwqDCoMKgwqDCoMKg wqDCoHwgwqDCoMKgMTYNCjxicj4gcGdfbXVsdGl4YWN0IMKgwqDCoMKgwqDCoMKgwqB8IMKgwqDC oDI4DQo8YnI+IHBnX25vdGlmeSDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCDCoMKgwqDCoDQNCjxi cj4gcGdfcmVwbHNsb3QgwqDCoMKgwqDCoMKgwqDCoMKgfCDCoMKgwqDCoDQNCjxicj4gcGdfc2Vy aWFsIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8IMKgwqDCoMKgNA0KPGJyPiBwZ19zbmFwc2hvdHMg wqDCoMKgwqDCoMKgwqDCoHwgwqDCoMKgwqA0DQo8YnI+IHBnX3N0YXQgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB8IMKgwqDCoMKgNA0KPGJyPiBwZ19zdGF0X3RtcCDCoMKgwqDCoMKgwqDCoMKg wqB8IMKgwqDCoMKgNA0KPGJyPiBwZ19zdWJ0cmFucyDCoMKgwqDCoMKgwqDCoMKgwqB8IMKgwqDC oDEyDQo8YnI+IHBnX3RibHNwYyDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCDCoMKgwqDCoDQNCjxi cj4gcGdfdHdvcGhhc2UgwqDCoMKgwqDCoMKgwqDCoMKgfCDCoMKgwqDCoDQNCjxicj4gUEdfVkVS U0lPTiDCoMKgwqDCoMKgwqDCoMKgwqDCoHwgwqDCoMKgwqA0DQo8YnI+IHBnX3dhbCDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgfCAxNjM5Mg0KPGJyPiBwZ194YWN0IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgfCDCoMKgwqAxMg0KPGJyPiBwb3N0Z3Jlc3FsLmF1dG8uY29uZiB8IMKgwqDC oMKgNA0KPGJyPiBwb3N0bWFzdGVyLm9wdHMgwqDCoMKgwqDCoHwgwqDCoMKgwqA0DQo8YnI+IHBv c3RtYXN0ZXIucGlkIMKgwqDCoMKgwqDCoHwgwqDCoMKgwqA0DQo8YnI+KDIxIHJvd3MpDQo8YnI+ DQo8YnI+VGltZTogMC4yODIgbXM8YnI+PC9zcGFuPjwvZGl2PjwvZGl2Pjxicj48ZGl2IGNsYXNz PSJnbWFpbF9xdW90ZSI+PGRpdiBkaXI9Imx0ciIgY2xhc3M9ImdtYWlsX2F0dHIiPk9uIE1vbiwg SnVsIDE1LCAyMDI0IGF0IDQ6NDLigK9QTSBTaGVuYXZhaSwgTWFudWVsICZsdDs8YSBocmVmPSJt YWlsdG86bWFudWVsLnNoZW5hdmFpQHNhcC5jb20iPm1hbnVlbC5zaGVuYXZhaUBzYXAuY29tPC9h PiZndDsgd3JvdGU6PGJyPjwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5 bGU9Im1hcmdpbjowcHggMHB4IDBweCAwLjhleDtib3JkZXItbGVmdDoxcHggc29saWQgcmdiKDIw NCwyMDQsMjA0KTtwYWRkaW5nLWxlZnQ6MWV4Ij48ZGl2IGNsYXNzPSJtc2ctNDM3NDYwMTMyNzQx MjU2NjYxNiI+DQoNCg0KDQoNCg0KPGRpdiBsYW5nPSJlbi1ERSIgc3R5bGU9Im92ZXJmbG93LXdy YXA6IGJyZWFrLXdvcmQ7Ij4NCjxkaXYgY2xhc3M9Im1fLTQzNzQ2MDEzMjc0MTI1NjY2MTZXb3Jk U2VjdGlvbjEiPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPkhpIGV2 ZXJ5b25lLDx1PjwvdT48dT48L3U+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxz cGFuIGxhbmc9IkVOLVVTIj48dT48L3U+wqA8dT48L3U+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJN c29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj53ZSBjdXJyZW50bHkgY2FwdHVyZSB0aGUgZGIg c2l6ZSAocGdfZGF0YWJhc2Vfc2l6ZSkgd2hpY2ggZ2l2ZXMgdGhlIOKAnERpc2sgc3BhY2UgdXNl ZCBieSB0aGUgZGF0YWJhc2Ugd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWXigJ0uIElzIGl0IHBvc3Np YmxlIHRvIGZ1cnRoZXIgc3BsaXQgdGhpcyBkYXRhIGhvdyBtdWNoIHNwYWNlIGlzIG9jY3VwaWVk IGJ5IGxpdmUgdHVwbGVzLCBkZWFkDQogdHVwbGVzIGFuZCBmcmVlIHNwYWNlPzx1PjwvdT48dT48 L3U+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj48 dT48L3U+wqA8dT48L3U+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxh bmc9IkVOLVVTIj5XZSB3b3VsZCBsaWtlIHRvIGhhdmUgc29tZXRoaW5nIGxpa2U6PHU+PC91Pjx1 PjwvdT48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMi PkRCIFNpemU6IDIwMCBNQiwgbGl2ZSB0dXBsZSAxMDBNQiwgRGVhZCBUdXBsZTogMjAgTUIsIGZy ZWUgc3BhY2UgODBNQjx1PjwvdT48dT48L3U+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3Jt YWwiPjxzcGFuIGxhbmc9IkVOLVVTIj48dT48L3U+wqA8dT48L3U+PC9zcGFuPjwvcD4NCjxwIGNs YXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj5JcyB0aGlzIHBvc3NpYmxlPzx1Pjwv dT48dT48L3U+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVO LVVTIj48dT48L3U+wqA8dT48L3U+PC9zcGFuPjwvcD4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxz cGFuIGxhbmc9IkVOLVVTIj5CZXN0IHJlZ2FyZHMsPHU+PC91Pjx1PjwvdT48L3NwYW4+PC9wPg0K PHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPk1hbnVlbDx1PjwvdT48dT48 L3U+PC9zcGFuPjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQoNCjwvZGl2PjwvYmxvY2txdW90ZT48L2Rp dj4NCg== --00000000000089b74b061d4c2681--