我在我的PostgreSQL服务器托管超过50个数据库。 我需要将一些他们的另一台主机上,以腾出一些磁盘空间,但如何衡量我的卷上的每个数据库使用的磁盘空间?
是否有任何功能的存在是为了得到我想要的信息?
我在我的PostgreSQL服务器托管超过50个数据库。 我需要将一些他们的另一台主机上,以腾出一些磁盘空间,但如何衡量我的卷上的每个数据库使用的磁盘空间?
是否有任何功能的存在是为了得到我想要的信息?
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/
你可以使用PostgreSQL元命令:
\l
将列出数据库 \l+
扩展了面积,表空间,说明清单。 使用\?
让元命令的完整列表。 另请参阅: https://www.postgresql.org/docs/9.5/static/app-psql.html
这是一个老问题,但我创建了一个办法看到linux命令的结果df -h
通过SQL查询,因此您的可用磁盘空间和总可用磁盘(文件系统,大小,使用,其他,使用%,装上)对于一个给定的文件系统空间。 不完全的问题是关于什么的,但有助于一些使用/我。 我想这个问题的答案在这里几小时前,所以我在这里把它(仅适用于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