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

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

select pg_database_size('databaseName');

当前回答

您可以从“pg_database”系统表中获得可以连接到的所有数据库的名称。只需将函数应用于名称,如下所示。

select t1.datname AS db_name,  
       pg_size_pretty(pg_database_size(t1.datname)) as db_size
from pg_database t1
order by pg_database_size(t1.datname) desc;

如果您想让机器而不是人使用输出,则可以删除pg_size_pretty()函数。

其他回答

SELECT pg_size_pretty(pg_database_size('name of database'));

会给你一个特定数据库的总大小,但我不认为你可以做所有的数据库在一个服务器。

然而你可以这样做…

DO
$$
DECLARE
r   RECORD;
db_size TEXT;
BEGIN
FOR r in
SELECT datname FROM pg_database
WHERE datistemplate = false
LOOP
db_size:= (SELECT pg_size_pretty(pg_database_size(r.datname)));

RAISE NOTICE 'Database:% , Size:%', r.datname , db_size;

END LOOP;
END;
$$

您可以使用下面的查询来查找PostgreSQL所有数据库的大小。

参考资料来自这个博客。

SELECT 
    datname AS DatabaseName
    ,pg_catalog.pg_get_userbyid(datdba) AS OwnerName
    ,CASE 
        WHEN pg_catalog.has_database_privilege(datname, 'CONNECT')
        THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(datname))
        ELSE 'No Access For You'
    END AS DatabaseSize
FROM pg_catalog.pg_database
ORDER BY 
    CASE 
        WHEN pg_catalog.has_database_privilege(datname, 'CONNECT')
        THEN pg_catalog.pg_database_size(datname)
        ELSE NULL
    END DESC;

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

\l+ <database_name>

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

\l+

是的,在Postgres中有一个命令可以查找数据库的大小。是这样的:

SELECT pg_database.datname as "database_name", pg_size_pretty(pg_database_size(pg_database.datname)) AS size_in_mb FROM pg_database ORDER by size_in_mb DESC;
-- Database Size
SELECT pg_size_pretty(pg_database_size('Database Name'));
-- Table Size
SELECT pg_size_pretty(pg_relation_size('table_name'));