First, Introduction 
 
PostgreSQL provides a number of system management functions to view tables, indexes, table spaces, and the size of the database, described in detail below. 
 
 
second, the Database object dimension function
 
 
 
  
   
   | The name of the function |  
   return type |  
   Describe |  
  
 
   
   | Pg_column_size (Any) |  
   Int |  
   The number of bytes required to store a specified number (possibly compressed) |  
  
 
   
   | Pg_database_size (OID) |  
   bigint |  
   Disk space used by the database specifying the OID |  
  
 
   
   | Pg_database_size (name) |  
   bigint |  
   Disk space used by the database with the specified name |  
  
 
   
   | Pg_indexes_size (Regclass) |  
   bigint |  
   Total disk space used to correlate table indexes for the specified table OID or table name |  
  
 
   
   | Pg_relation_size (Relation regclass, fork text) |  
   bigint |  
   Specifies an OID or named table or index, specifying thedisk space used by the fork ('main ', ' FSM ', or ' VM ')   |  
  
 
   
   | Pg_relation_size (Relation Regclass) |  
   bigint |  
   Abbreviation for pg_relation_size (..., ' main ') |  
  
 
   
   | Pg_size_pretty (bigint) |  
   Text |  
   Converts a size in bytes expressed as a 64-bit integer to a human-readable format with size units |  
  
 
   
   | Pg_size_pretty (Numeric) |  
   Text |  
   Converts a byte-calculated value into a human-readable dimension unit |  
  
 
   
   | Pg_table_size (Regclass) |  
   bigint |  
   Specifies the disk space used by tables of the table OID or table name, excluding indexes (but includes toast, free space mappings, and visual mappings) |  
  
 
   
   | Pg_tablespace_size (OID) |  
   bigint |  
   Disk space used by the table space of the specified OID |  
  
 
   
   | Pg_tablespace_size (name) |  
   bigint |  
   Disk space used by the specified table space for the name |  
  
 
   
   | Pg_total_relation_size (Regclass) |  
   bigint |  
   Specifies the total disk space used by the table OID or table name, including all indexes and toast Data |  
  
 
  
 
 
Third, the example explanation
 
3.1 View the number of bytes required to store a specified number
 
 
 
  
  Copy Code code as follows: 
 
 
  
 
  
  david=# Select Pg_column_size (1); 
  
Pg_column_size 
  
---------------- 
  
(1 row) 
  
 
 
  david=# Select Pg_column_size (10000);
Pg_column_size
----------------
(1 row)
 
  david=# Select Pg_column_size (' David ');
Pg_column_size
----------------
(1 row)
 
  david=# Select Pg_column_size (' Hello,world ');
Pg_column_size
----------------
(1 row)
 
  david=# Select Pg_column_size (' 2013-04-18 15:17:21.622885+08 ');
Pg_column_size
----------------
(1 row)
 
  david=# Select Pg_column_size (' China ');
Pg_column_size
----------------
(1 row)
 
  david=#
 
   
  
 
3.2 View Database size
 
View Raw Data
 
 
 
  
  Copy Code code as follows: 
 
 
  
 
 david=# \d Test 
 
Table "Public.test" 
 
Column | Type | Modifiers 
 
-----------+-----------------------+----------- 
 
ID | Integer | 
 
name | Character varying (20) | 
 
Gender | Boolean | 
 
Join_date | Date | 
 
Dept | Character (4) | 
 
Indexes: 
 
"Idx_join_date_test" Btree (join_date) 
 
"Idx_test" Btree (ID) 
 
 
  
 
 david=# Select COUNT (1) from test;
Count
---------
(1 row)
  
 
 david=#
  
  
 
View the David database size
 
 
 
  
  Copy Code code as follows: 
 
 
  
 
  
  david=# Select Pg_database_size (' David '); 
  
Pg_database_size 
  
------------------ 
  
(1 row) 
  
 
 
  david=#
 
   
  
 
View all database sizes
 
 
 
  
  Copy Code code as follows: 
 
 
  
 
  
  david=# Select Pg_database.datname, Pg_database_size (pg_database.datname) as size from pg_database; 
  
Datname | Size 
  
-----------+------------- 
  
Template0 | 6513156 
  
Postgres | 6657144 
  
JBoss | 6521348 
  
Bugs | 6521348 
  
David | 190534776 
  
BMCV3 | 28147135608 
  
MyDB | 10990712 
  
template1 | 6521348 
  
(8 rows) 
  
 
 
  david=#
 
   
  
 
The results looked too long to be easy to read.
 
3.3 Display size in a humane way
 
 
 
  
  Copy Code code as follows: 
 
 
  
 
  
  david=# Select Pg_size_pretty (pg_database_size (' David ')); 
  
Pg_size_pretty 
  
---------------- 
  
MB 
  
(1 row) 
  
 
 
  david=#
 
   
  
 
3.4 View Single Index size
 
 
 
  
  Copy Code code as follows: 
 
 
  
 
  
  david=# Select Pg_relation_size (' idx_test '); 
  
Pg_relation_size 
  
------------------ 
  
(1 row) 
  
 
 
  david=# Select Pg_size_pretty (pg_relation_size (' idx_test '));
Pg_size_pretty
----------------
MB
(1 row)
 
  david=#
 
   
  
 
 
 
  
  Copy Code code as follows: 
 
 
  
 
  
  david=# Select Pg_size_pretty (pg_relation_size (' idx_join_date_test ')); 
  
Pg_size_pretty 
  
---------------- 
  
MB 
  
(1 row) 
  
 
 
  david=#
 
   
  
 
3.5 View all index sizes in the specified table
 
 
 
  
  Copy Code code as follows: 
 
 
  
 
  
  david=# Select Pg_indexes_size (' Test '); 
  
Pg_indexes_size 
  
----------------- 
  
(1 row) 
  
 
 
  david=# Select Pg_size_pretty (pg_indexes_size (' Test '));
Pg_size_pretty
----------------
MB
(1 row)
 
  david=#
 
   
  
 
The Idx_test and idx_join_date_test two index sizes add up to almost equal the index size of the pg_indexes_size () query above.
 
3.6 View all the index sizes in the specified schema, in order from large to small.
 
 
 
  
  Copy Code code as follows: 
 
 
  
 
 david=# select * from Pg_namespace; 
 
Nspname |               Nspowner | Nspacl 
 
--------------------+----------+------------------------------------- 
 
Pg_toast | 10 | 
 
Pg_temp_1 | 10 | 
 
Pg_toast_temp_1 | 10 | 
 
Pg_catalog | 10 | {Postgres=uc/postgres,=u/postgres} 
 
Information_schema | 10 | {Postgres=uc/postgres,=u/postgres} 
 
Public | 10 | {Postgres=uc/postgres,=uc/postgres} 
 
(6 rows) 
 
 
  
 david=# Select Indexrelname, Pg_size_pretty (Pg_relation_size (relid)) from pg_stat_user_indexes where Schemaname= ' Public ' ORDER by Pg_relation_size (relid) desc;
Indexrelname | Pg_size_pretty
-------------------------------+----------------
Idx_join_date_test | MB
Idx_test | MB
Testtable_idx | 1424 KB
City_pkey | 256 KB
City11 | 256 KB
Countrylanguage_pkey | Mb
Sale_pkey | 8192 bytes
Track_pkey | 8192 bytes
Tbl_partition_201211_joindate | 8192 bytes
Tbl_partition_201212_joindate | 8192 bytes
Tbl_partition_201301_joindate | 8192 bytes
Tbl_partition_201302_joindate | 8192 bytes
Tbl_partition_201303_joindate | 8192 bytes
Customer_pkey | 8192 bytes
Album_pkey | 8192 bytes
Item_pkey | 8192 bytes
Tbl_partition_201304_joindate | 8192 bytes
Tbl_partition_201307_joindate | 8192 bytes
Tbl_partition_201305_joindate | 0 bytes
Tbl_partition_201306_joindate | 0 bytes
(rows)
 
 
 david=#
  
  
 
3.7 View the specified table size
 
 
 
  
  Copy Code code as follows: 
 
 
  
 
  
  david=# Select Pg_relation_size (' Test '); 
  
Pg_relation_size 
  
------------------ 
  
(1 row) 
  
 
 
  david=# Select Pg_size_pretty (pg_relation_size (' Test '));
Pg_size_pretty
----------------
MB
(1 row)
 
  david=#
 
   
  
 
Use the Pg_table_size () function to view
 
 
 
  
  Copy Code code as follows: 
 
 
  
 
  
  david=# Select Pg_table_size (' Test '); 
  
Pg_table_size 
  
--------------- 
  
(1 row) 
  
 
 
  david=# Select Pg_size_pretty (pg_table_size (' Test '));
Pg_size_pretty
----------------
MB
(1 row)
 
  david=#
 
   
  
 
3.8 View the total size of the specified table
 
 
 
  
  Copy Code code as follows: 
 
 
  
 
  
  david=# Select Pg_total_relation_size (' Test '); 
  
Pg_total_relation_size 
  
------------------------ 
  
(1 row) 
  
 
 
  david=# Select Pg_size_pretty (pg_total_relation_size (' Test '));
Pg_size_pretty
----------------
MB
(1 row)
 
  david=#
 
   
  
 
3.9 View all the table sizes in the specified schema, in order from large to small.
 
 
 
  
  Copy Code code as follows: 
 
 
  
 
 david=# Select Relname, Pg_size_pretty (Pg_relation_size (relid)) from Pg_stat_user_tables where schemaname= ' public ' Order by Pg_relation_size (relid) desc; 
 
Relname | Pg_size_pretty 
 
-------------------------------+---------------- 
 
Test | MB 
 
TestTable | 1424 KB 
 
City | 256 KB 
 
Countrylanguage | Mb 
 
Country | KB 
 
Testcount | 8192 bytes 
 
tbl_partition_201302 | 8192 bytes 
 
tbl_partition_201303 | 8192 bytes 
 
person | 8192 bytes 
 
Customer | 8192 bytes 
 
American_state | 8192 bytes 
 
Tbl_david | 8192 bytes 
 
EMP | 8192 bytes 
 
tbl_partition_201212 | 8192 bytes 
 
tbl_partition_201304 | 8192 bytes 
 
Tbl_partition_error_join_date | 8192 bytes 
 
tbl_partition_201211 | 8192 bytes 
 
album | 8192 bytes 
 
tbl_partition_201307 | 8192 bytes 
 
Tbl_xulie | 8192 bytes 
 
tbl_partition_201301 | 8192 bytes 
 
Sale | 8192 bytes 
 
Item | 8192 bytes 
 
Track | 8192 bytes 
 
tbl_partition_201306 | 0 bytes 
 
tbl_partition | 0 bytes 
 
tbl_partition_201305 | 0 bytes 
 
Person2 | 0 bytes 
 
(rows) 
 
 
  
 
 david=#
  
  
 
3.10 View Table Space size
 
 
 
  
  Copy Code code as follows: 
 
 
  
 
  
  david=# select Spcname from Pg_tablespace; 
  
Spcname 
  
------------ 
  
Pg_default 
  
Pg_global 
  
(2 rows) 
  
 
 
  david=# Select Pg_tablespace_size (' Pg_default ');
Pg_tablespace_size
--------------------
(1 row)
 
  david=# Select Pg_size_pretty (pg_tablespace_size (' Pg_default '));
Pg_size_pretty
----------------
GB
(1 row)
 
  david=#
 
   
  
 
Another way to view:
 
 
 
  
  Copy Code code as follows: 
 
 
  
 
  
  david=# Select Pg_tablespace_size (' Pg_default ')/1024/1024 as "size M"; 
  
SIZE M 
  
-------- 
  
(1 row) 
  
 
 
  david=# Select Pg_tablespace_size (' Pg_default ')/1024/1024/1024 as "size G";
SIZE G
--------
(1 row)
 
  david=#