Postgres DB Size命令

时间:2013-09-20 00:22:24

标签: sql postgresql postgresql-9.2

是否有任何命令可以在Postgres中找到所有数据库大小?

我可以使用以下命令找到特定数据库的大小:

select pg_database_size('databaseName');

10 个答案:

答案 0 :(得分:306)

并且......如果您可能不想输入整个查询... 你也可以输入......

\l+ <database_name>

您将获得有关数据库的一些详细信息, 包括数据库的大小。

并且......获取所有数据库的大小。

你可以输入......

\l+

您可能需要进入postgresql命令提示符进行查询 使用这些postgresql帮助程序命令。

键入

检查其他postgresql帮助程序命令
\?

在postgresql命令提示符下。

答案 1 :(得分:165)

您可以从“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()函数。

答案 2 :(得分:142)

-- Database Size
SELECT pg_size_pretty(pg_database_size('Database Name'));
-- Table Size
SELECT pg_size_pretty(pg_relation_size('table_name'));

答案 3 :(得分:66)

根据here

的答案@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

答案 4 :(得分:23)

是的,有一个命令可以在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;

答案 5 :(得分:12)

SELECT pg_size_pretty(pg_database_size(&#39;数据库名称&#39;));

将为您提供特定数据库的总大小,但我不认为您可以在服务器中执行所有数据库。

但是你可以这样做......

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

答案 6 :(得分:10)

来自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

该页面还包含用于查找最大关系和最大表格大小的片段。

答案 7 :(得分:3)

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

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

答案 8 :(得分:2)

您可以使用以下查询来查找PostgreSQL的所有数据库的大小。

<强> Reference is taken from this blog.

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;

答案 9 :(得分:1)

du -k /var/lib/postgresql/ |sort -n |tail