查找所有数据库大小的命令是什么?
我能够通过使用以下命令找到特定数据库的大小:
select pg_database_size('databaseName');
查找所有数据库大小的命令是什么?
我能够通过使用以下命令找到特定数据库的大小:
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()函数。
其他回答
来自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
该页面还提供了用于查找最大关系和最大表大小的代码片段。
du -k /var/lib/postgresql/ |sort -n |tail
您可以从“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()函数。
-- Database Size
SELECT pg_size_pretty(pg_database_size('Database Name'));
-- Table Size
SELECT pg_size_pretty(pg_relation_size('table_name'));
您可以输入以下psql元命令来获取指定数据库的一些详细信息,包括其大小:
\l+ <database_name>
并获得所有数据库的大小(你可以连接):
\l+