You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
postgres/contrib/dbsize
Tom Lane d9b68c8061 Code review for recent dbsize changes. Fix some thinkos, enforce coding 21 years ago
..
Makefile > Please find enclose a submission to fix these problems. 21 years ago
README.dbsize Code review for recent dbsize changes. Fix some thinkos, enforce coding 21 years ago
dbsize.c Code review for recent dbsize changes. Fix some thinkos, enforce coding 21 years ago
dbsize.sql.in Code review for recent dbsize changes. Fix some thinkos, enforce coding 21 years ago

README.dbsize

This module contains several functions that report the size of a given
database object:

int8 database_size(name)
int8 relation_size(text)

int8 pg_database_size(oid)
int8 pg_relation_size(oid)
int8 pg_tablespace_size(oid)

text pg_size_pretty(int8)

The first two functions:

SELECT database_size('template1');
SELECT relation_size('pg_class');

take the name of the object (possibly schema-qualified, for relation_size),
while these functions take object OIDs:

SELECT pg_database_size(1); -- template1 database
SELECT pg_relation_size(1259); -- pg_class table size
SELECT pg_tablespace_size(1663); -- pg_default tablespace

Please note that relation_size and pg_relation_size report only the size of
the selected relation itself; any subsidiary indexes or toast tables are not
counted. To obtain the total size of a table including all helper files
you'd have to do something like:

SELECT *,
pg_size_pretty(tablesize+indexsize+toastsize+toastindexsize) AS totalsize
FROM
(SELECT pg_relation_size(cl.oid) AS tablesize,
COALESCE((SELECT SUM(pg_relation_size(indexrelid))::bigint
FROM pg_index WHERE cl.oid=indrelid), 0) AS indexsize,
CASE WHEN reltoastrelid=0 THEN 0
ELSE pg_relation_size(reltoastrelid)
END AS toastsize,
CASE WHEN reltoastrelid=0 THEN 0
ELSE pg_relation_size((SELECT reltoastidxid FROM pg_class ct
WHERE ct.oid = cl.reltoastrelid))
END AS toastindexsize
FROM pg_class cl
WHERE relname = 'foo') ss;

This sample query utilizes the helper function pg_size_pretty(int8),
which formats the number of bytes into a convenient string using KB, MB,
GB. It is also contained in this module.

To install, just run make; make install. Then load the functions
into any database using dbsize.sql.