很多时候我们需要关注数据库增长,以确保它不会超出你的磁盘,或者你可以提前做好准备。 接下来我们会说下很常见的问题 - 您的数据库有多大。 很幸运的是PostgreSQL已经有函数很快来帮助您轻松回答这个问题。 

如何知道我们的数据库有多大?

使用: pg_database_size()函数,它接受数据库集群中数据库的名称并返回以字节为单位的大小。 当大多数数据库的大小为兆字节,千兆字节甚至太字节时,尝试破译字节可能会非常难看。 幸运的是,有一个名为pg_size_pretty()的漂亮函数,它使这些数字更具人性化, 可读性会更高些。 另外,还有一个在PG中有一个current_database()函数,它告诉我们当前连接到哪个数据库。 

最后当我们把这些函数结合起来你就得到了想要的答案:

SELECT pg_size_pretty(pg_database_size(current_database())) AS human_size, 
       pg_database_size(current_database()) AS raw_size;

 human_size | raw_size
------------+----------
 8293 kB    |  8492519
(1 row)

在下面这个例子中,我们将总结了当前PostgreSQL实例中所有数据库的大小。 注意:我们必须将大小转换为bigint,因为SUM函数在求和bigint时返回一个数字,而pg_pretty_size需要bigint。

SELECT pg_size_pretty(SUM(pg_database_size(datname))::bigint ) AS human_size, 
      SUM(pg_database_size(datname))::bigint AS raw_size, 
      pg_size_pretty( (SUM(pg_database_size(datname) ) - pg_database_size(current_database() ) )::bigint ) AS h_without_current
      FROM pg_database;

 human_size |  raw_size   | h_without_current
------------+-------------+-------------------
 11 GB      | 11409157399 | 11 GB

结束!