Ответ 1
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/
У меня более 50 баз данных, размещенных на моем сервере postgresql. Мне нужно переместить некоторые из них на другой хост, чтобы освободить место на диске, но как я могу измерить дисковое пространство, используемое каждой базой данных на моем томе?
Существует ли какая-либо функция для получения необходимой информации?
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+
расширяет список с помощью Size, Tablespace, Description.Используйте \?
, чтобы получить полный список мета-команд. Также см:
https://www.postgresql.org/docs/9.5/static/app-psql.html
Это старый вопрос, но я создал способ увидеть результаты команды linux df -h
(Filesystem, Size, Used, Avail, Use%, Mounted on) через 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
Люблю горный ответ. Я настроил cron для возврата байтов и удалил строку заголовка следующим образом.
* * * * * df -B1 | tail -n+2 | awk '{print $1","$2","$3","$4","$5","$6}' > /var/www/diskspaceinfo.csv