查找所有数据库大小的命令是什么?

我能够通过使用以下命令找到特定数据库的大小:

select pg_database_size('databaseName');

当前回答

du -k /var/lib/postgresql/ |sort -n |tail

其他回答

来自PostgreSQL wiki。


注意:用户无法连接到的数据库按无限大小排序。

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

该页面还提供了用于查找最大关系和最大表大小的代码片段。

您可以输入以下psql元命令来获取指定数据库的一些详细信息,包括其大小:

\l+ <database_name>

并获得所有数据库的大小(你可以连接):

\l+

根据@Hendy Irawan的回答

显示数据库大小:

\l+

e.g.

=> \l+
 berbatik_prd_commerce    | berbatik_prd     | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 19 MB   | pg_default | 
 berbatik_stg_commerce    | berbatik_stg     | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 8633 kB | pg_default | 
 bursasajadah_prd         | bursasajadah_prd | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 1122 MB | pg_default | 

显示表大小:

\d+

e.g.

=> \d+
 public | tuneeca_prd | table | tomcat | 8192 bytes | 
 public | tuneeca_stg | table | tomcat | 1464 kB    | 

只适用于psql。

-- Database Size
SELECT pg_size_pretty(pg_database_size('Database Name'));
-- Table Size
SELECT pg_size_pretty(pg_relation_size('table_name'));
du -k /var/lib/postgresql/ |sort -n |tail