Postgresql vindt totale schijfruimte die door een database wordt gebruikt

Ik heb meer dan 50 databases gehost op mijn postgresql-server. Ik moet er een aantal naar een andere host verplaatsen om wat schijfruimte vrij te maken, maar hoe kan ik de schijfruimte meten die door elke database op mijn volume wordt gebruikt?

Is er een functie om de informatie te krijgen die ik wil?


Antwoord 1, autoriteit 100%

SELECT pg_database_size('geekdb')

of

SELECT pg_size_pretty(pg_database_size('geekdb'))

http://www.thegeekstuff.com/2009/05/ 15-geavanceerde-postgresql-commando’s-met-voorbeelden/


Antwoord 2, autoriteit 45%

Je zou postgresql Meta-Commands kunnen gebruiken:

  • \lzou databases weergeven
  • \l+breidt lijst uit met Grootte, Tabelruimte, Beschrijving.

Gebruik \?om de volledige lijst met meta-commando’s te krijgen. Zie ook:
https://www.postgresql.org/docs/9.5/static/app -psql.html


Antwoord 3, autoriteit 6%

Dit is een oude vraag, maar ik heb een manier gemaakt om de resultaten van het linux-commando df -h(Filesystem, Size, Used, Avail, Use%, Mounted on) te zien via een sql-query , dus uw vrije schijfruimte en de totale beschikbare schijfruimte voor een bepaald bestandssysteem. Niet precies waar de vraag over gaat, maar nuttig voor sommigen van gebruik / mij. Ik wou dat dat antwoord hier uren geleden was, dus ik plaats het hier (alleen Linux):

maak een cron-taak als volgt:

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

maak een vreemde tabel om te zoeken:

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');

Bevraag vervolgens uw tabel als volgt:

select * from diskspaceinfo

Als je gewoon iets specifieks wilt, filter dan de tabel natuurlijk op wat je wilt. Het heeft beperkingen, maar is erg handig voor mij.

Als u plperluheeft, kunt u deze functie gebruiken:
https://wiki.postgresql.org/wiki/Free_disk_space

Een handige link:
https://wiki.postgresql.org/wiki/Disk_Usage


Antwoord 4, autoriteit 2%

Ik ben dol op het antwoord van de bergbeklimmer. Ik heb de cron aangepast om bytes terug te geven en de koprij als volgt te verwijderen.

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

Other episodes