查找所有数据库大小的命令是什么?
我能够通过使用以下命令找到特定数据库的大小:
select pg_database_size('databaseName');
查找所有数据库大小的命令是什么?
我能够通过使用以下命令找到特定数据库的大小:
select pg_database_size('databaseName');
当前回答
您可以使用下面的查询来查找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;
其他回答
-- Database Size
SELECT pg_size_pretty(pg_database_size('Database Name'));
-- Table Size
SELECT pg_size_pretty(pg_relation_size('table_name'));
来自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
启动pgAdmin,连接到服务器,单击数据库名称,并选择统计信息选项卡。您将在列表的底部看到数据库的大小。
然后,如果单击另一个数据库,它将停留在statistics选项卡上,因此您可以轻松地查看许多数据库大小,而不需要太多工作。如果您打开表列表,它将显示所有表及其大小。
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;
$$