Подтвердить что ты не робот

Postgresql находит общее дисковое пространство, используемое базой данных

У меня более 50 баз данных, размещенных на моем сервере postgresql. Мне нужно переместить некоторые из них на другой хост, чтобы освободить место на диске, но как я могу измерить дисковое пространство, используемое каждой базой данных на моем томе?

Существует ли какая-либо функция для получения необходимой информации?

4b9b3361

Ответ 2

Вы можете использовать мета-команды postgresql:

  • \l будут перечислены базы данных
  • \l+ расширяет список с помощью Size, Tablespace, Description.

Используйте \?, чтобы получить полный список мета-команд. Также см: https://www.postgresql.org/docs/9.5/static/app-psql.html

Ответ 3

Это старый вопрос, но я создал способ увидеть результаты команды 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

Ответ 4

Люблю горный ответ. Я настроил cron для возврата байтов и удалил строку заголовка следующим образом.

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