Postgresql查找数据库使用的总磁盘空间

时间:2013-01-15 20:33:14

标签: database postgresql diskspace

我的postgresql服务器托管了50多个数据库。我需要在其他主机上移动其中一些,以释放一些磁盘空间,但是如何测量卷上每个数据库使用的磁盘空间?

是否有任何函数可以获取我想要的信息?

4 个答案:

答案 0 :(得分:40)

SELECT pg_database_size('geekdb')

SELECT pg_size_pretty(pg_database_size('geekdb'))

http://www.thegeekstuff.com/2009/05/15-advanced-postgresql-commands-with-examples/

答案 1 :(得分:22)

您可以使用postgresql元命令:

  • todo会列出数据库
  • \l扩展了包含大小,表空间,描述的列表。

使用\l+获取完整的元命令列表。另见: https://www.postgresql.org/docs/9.5/static/app-psql.html

答案 2 :(得分:1)

这是一个老问题,但我创建了一种方法,通过SQL查询查看linux命令df -h(文件系统,大小,已使用,可用,使用%,已安装)的结果,从而获得免费磁盘给定文件系统的空间和总可用磁盘空间。问题不完全是什么,但对某些用途/我有帮助。我希望答案在几个小时前就在这里,所以我把它放在这里(仅限linux):

创建一个这样的cron作业:

@hourly df -h | awk '{print $1","$2","$3","$4","$5","$6}' > /pathhere/diskspaceinfo.csv`

创建一个要查询的外表:

create extension file_fdw;

create server logserver FOREIGN DATA WRAPPER file_fdw;

CREATE FOREIGN TABLE diskspaceinfo 
(file_sys text, size text, used text, avail text, used_pct text, mount text) 
SERVER fileserver 
OPTIONS (filename '/pathhere/diskspaceinfo.csv', format 'csv');

然后像这样查询你的表:

select * from diskspaceinfo

如果您只想要特定的东西,当然只需过滤表格即可。它有局限性,但对我来说非常有用。

如果您有plperlu,则可以使用此功能: https://wiki.postgresql.org/wiki/Free_disk_space

一个有用的链接: https://wiki.postgresql.org/wiki/Disk_Usage

答案 3 :(得分:1)

喜欢登山者的答案。我对cron进行了调整,以返回字节并按如下所示删除标题行。

* * * * * df -B1 | tail -n+2 | awk '{print $1","$2","$3","$4","$5","$6}' > /var/www/diskspaceinfo.csv