查找所有数据库大小的命令是什么?
我能够通过使用以下命令找到特定数据库的大小:
select pg_database_size('databaseName');
查找所有数据库大小的命令是什么?
我能够通过使用以下命令找到特定数据库的大小:
select pg_database_size('databaseName');
当前回答
根据@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。
其他回答
您可以从“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()函数。
您可以输入以下psql元命令来获取指定数据库的一些详细信息,包括其大小:
\l+ <database_name>
并获得所有数据库的大小(你可以连接):
\l+
du -k /var/lib/postgresql/ |sort -n |tail
根据@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。
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;
$$