Postgres数据库大小命令

有什么命令可以在Postgres中查找所有的数据库大小吗?

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

select pg_database_size('databaseName'); 

而且…如果万一你不想input一个完整的查询…你也可以input…

 \l+ <database_name> 

你会得到一些关于数据库的细节,包括数据库的大小。

和…获取所有数据库的大小。

你可以input…

 \l+ 

您可能需要进入postgresql命令提示符以查询这些postgresql帮助器命令。

通过键入检查其他postgresql帮助程序命令

 \? 

在postgresql命令提示符下。

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

 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')); 

基于@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

来自PostgreSQL维基 。


用户无法连接的数据库按照无限大小sorting。

 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 

该页面也有片段,用于查找您最大的关系和最大的表格的大小。

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

然后,如果您单击另一个数据库,它将保留在统计信息选项卡上,以便您可以轻松地查看许多数据库大小。 如果您打开表格列表,则会显示所有表格及其大小。

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;