postgresql 查看数据库,表,索引,表空间以及大小

时间:2022-11-08 03:21:39

转载 http://blog.51yip.com/pgsql/1525.html

1,查看数据库

playboy=> \l                       //\加上字母l,相当于mysql的,mysql> show databases;
        List of databases
   Name    |  Owner   | Encoding
-----------+----------+----------
 playboy   | postgres | UTF8
 postgres  | postgres | UTF8
 template0 | postgres | UTF8
 template1 | postgres | UTF8

playboy=> select pg_database_size('playboy');    //查看playboy数据库的大小
 pg_database_size
------------------
          3637896
(1 row)

playboy=> select pg_database.datname, pg_database_size(pg_database.datname) AS size from pg_database;    //查看所有数据库的大小
  datname  |  size
-----------+---------
 postgres  | 3621512
 playboy   | 3637896
 template1 | 3563524
 template0 | 3563524
(4 rows)

playboy=> select pg_size_pretty(pg_database_size('playboy'));      //以KB,MB,GB的方式来查看数据库大小
 pg_size_pretty
----------------
 3553 kB
(1 row)

 

2,查看多表

playboy=> \dt                      //相当于mysql的,mysql> show tables;
        List of relations
 Schema | Name | Type  |  Owner
--------+------+-------+---------
 public | test | table | playboy
(1 row)

 

3,查看单表

playboy=> \d test;                 //相当于mysql的,mysql> desc test;
            Table "public.test"
 Column |         Type          | Modifiers
--------+-----------------------+-----------
 id     | integer               | not null
 name   | character varying(32) |
Indexes: "playboy_id_pk" PRIMARY KEY, btree (id)

playboy=> select pg_relation_size('test');   //查看表大小
 pg_relation_size
------------------
                0
(1 row)

playboy=> select pg_size_pretty(pg_relation_size('test'));   //以KB,MB,GB的方式来查看表大小
 pg_size_pretty
----------------
 0 bytes
(1 row)

playboy=> select pg_size_pretty(pg_total_relation_size('test'));   //查看表的总大小,包括索引大小
 pg_size_pretty
----------------
 8192 bytes
(1 row)

 

4,查看索引

playboy=> \di                      //相当于mysql的,mysql> show index from test;
                List of relations
 Schema |     Name      | Type  |  Owner  | Table
--------+---------------+-------+---------+-------
 public | playboy_id_pk | index | playboy | test
(1 row)

playboy=> select pg_size_pretty(pg_relation_size('playboy_id_pk'));    //查看索大小
 pg_size_pretty
----------------
 8192 bytes
(1 row)

 

5,查看表空间,以及大小

playboy=> select spcname from pg_tablespace;         //查看所有表空间
  spcname
------------
 pg_default
 pg_global
(2 rows)

playboy=> select pg_size_pretty(pg_tablespace_size('pg_default'));   //查看表空间大小
 pg_size_pretty
----------------
 14 MB
(1 row)

 

6 统计数据库中各表占用磁盘大小:

SELECT table_schema || '.' || table_name AS table_full_name, pg_size_pretty(pg_total_relation_size('"' || table_schema || '"."' || table_name || '"')) AS size
FROM information_schema.tables
ORDER BY pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') DESC limit 20;

 

7.统计各数据库占用磁盘大小:

SELECT d.datname AS Name,  pg_catalog.pg_get_userbyid(d.datdba) AS Owner,
    CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')
        THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))
        ELSE 'No Access'
    END AS SIZE
FROM pg_catalog.pg_database d
    ORDER BY
    CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')
        THEN pg_catalog.pg_database_size(d.datname)
        ELSE NULL
    END DESC -- nulls first
    LIMIT 20