From: Bruce Momjian Date: Thu, 13 Jun 2002 04:36:50 +0000 (+0000) Subject: Add section on showing disk usage. X-Git-Tag: REL7_3~1412 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5612949ff8296768ed8d03cc88024950864475b4;p=postgresql Add section on showing disk usage. --- diff --git a/doc/src/sgml/maintenance.sgml b/doc/src/sgml/maintenance.sgml index 49e41b1433..1d7033c12a 100644 --- a/doc/src/sgml/maintenance.sgml +++ b/doc/src/sgml/maintenance.sgml @@ -1,5 +1,5 @@ @@ -366,6 +366,92 @@ VACUUM + + Disk Space Maintenance + + + disk space + + + + Each table has a primary heap disk file where most of the data is + stored. To store long column values, there is also a + TOAST file associated with the table, named based on the + table's oid (actually pg_class.relfilenode), and an index on the + TOAST table. There also may be indexes associated with + the base table. + + + + You can monitor disk space from two places; from inside + psql and from the command line using + contrib/oid2name. Using psql you can + issue queries to see the disk usage for any table: + +play=# SELECT relfilenode, relpages +play-# FROM pg_class +play-# WHERE relname = 'customer'; + relfilenode | relpages +-------------+---------- + 16806 | 60 +(1 row) + + + + + Each page is typically 8 kilobytes. relpages is only + updated by VACUUM and ANALYZE. To show the + space used by TOAST tables, use a query based on the heap + relfilenode: + +play=# SELECT relname, relpages +play-# FROM pg_class +play-# WHERE relname = 'pg_toast_16806' or +play-# relname = 'pg_toast_16806_index' +play-# ORDER BY relname; + relname | relpages +----------------------+---------- + pg_toast_16806 | 0 + pg_toast_16806_index | 1 + + + + + You can easily display index usage too: + +play=# SELECT c2.relname, c2.relpages +play-# FROM pg_class c, pg_class c2, pg_index i +play-# WHERE c.relname = 'customer' AND +play-# c.oid = i.indrelid AND +play-# c2.oid = i.indexrelid +play-# ORDER BY c2.relname; + relname | relpages +----------------------+---------- + customer_id_indexdex | 26 + + + + + It is easy to find your largest files using psql: + +play=# SELECT relname, relpages +play-# FROM pg_class +play-# ORDER BY relpages DESC; + relname | relpages +----------------------+---------- + bigtable | 3290 + customer | 3144 + + + + + You can also use oid2name to show disk usage. See + README.oid2name for examples. It includes a script + shows disk usage for each database. + + + + Log File Maintenance