Postgres DB Size命令

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

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

select pg_database_size('databaseName');
366519 次浏览

您可以从" 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'));

启动pgAdmin,连接到服务器,单击数据库名称,并选择统计信息选项卡。您将在列表的底部看到数据库的大小。

然后,如果单击另一个数据库,它将停留在statistics选项卡上,因此您可以轻松地查看许多数据库大小,而不需要太多工作。如果您打开表列表,它将显示所有表及其大小。

你可以输入下面的psql meta-command来获取指定数据库的一些详细信息,包括它的大小:

\l+ <database_name>

要获取所有数据库的大小(你可以连接到):

\l+

PostgreSQL维基


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

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

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

基于答案在这里 by @Hendy Irawan

显示数据库大小:

\l+

如。

=> \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+

如。

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

仅适用于psql

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;
$$

是的,在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;
du -k /var/lib/postgresql/ |sort -n |tail