Add section on showing disk usage.
authorBruce Momjian
Thu, 13 Jun 2002 04:36:50 +0000 (04:36 +0000)
committerBruce Momjian
Thu, 13 Jun 2002 04:36:50 +0000 (04:36 +0000)
doc/src/sgml/maintenance.sgml

index 49e41b1433a939804a7eece77c7dd7568636cdb3..1d7033c12a678ba68a659f4230968179be2f3144 100644 (file)
@@ -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