Frage

Ich habe ein "kleines" problem.Vor einer Woche meine Datenbank war das erreichen der vollen Festplatte capasity.Ich löschte viele Zeilen in verschiedenen Tabellen zu versuchen, um Speicherplatz freizugeben.Nach dem ich versucht mit einem vollen Vakuum wich nicht abgeschlossen.

Was ich wissen will ist.Als ich aufgehört habe das Vakuum von der voll compliting hinterlässt es irgendwelche temp-Dateien auf dem Datenträger, die ich löschen muss Händisch?Ich habe jetzt eine Datenbank, welches auf eine 100% Datenträger capasity, die unnötig zu sagen, ist ein großes problem.

Irgendwelche Tipps, um Speicherplatz freizugeben?

Ich bin mit SUSE mit einer postgres 8.1.4 Datenbank.

War es hilfreich?

Lösung

Erste von alle:

UPGRADE

Auch wenn Sie nicht zu 8.2, 8.3 oder 8.4 - mindestens ein Update auf die neueste 8.1 (was ist 8.1.17 im moment, aber wird 8.1.18 in 1-2 Tagen).

Zweite:diagnostizieren, was das problem ist.

Verwenden du - tool, um festzustellen, wo genau hast den Raum gehen.In welchem Verzeichnis wird besetzen zu viel Raum?

Überprüfen Sie mit df was ist insgesamt verwendete Speicherplatz, und prüfen Sie dann, um wie viel es ist PostgreSQL-Verzeichnis.

Die beste option ist die:

cd YOUR_PGDATA_DIR
du -sk *
cd base
du -sk *
cd LARGEST DIR FROM PREVIOUS COMMAND
du -sk * | sort -nr | head

Jetzt, dass Sie wissen, in welchem Verzeichnis in PGDATA ist mit Raum Sie etwas über es tun kann.

wenn Sie die logs oder pg_temp - Neustart pg oder entfernen Protokolle (pg_clog und pg_xlog sind nicht die Logdateien in den gängigsten Bedeutung des Wortes, nie alles löschen, was von dort!).

Wenn es etwas in Ihrem Basisverzeichnis, dann:

numerische Verzeichnisse im Basisverzeichnis beziehen sich auf Datenbanken.Sie können überprüfen Sie es mit:

select oid, datname from pg_database;

Wenn Sie wissen, dass die Datenbank mit den meisten Platz, eine Verbindung herzustellen, und prüfen Sie, welche Dateien den meisten Speicherplatz.

Dateinamen werden mit numerischen optional ".Ziffern" suffix das suffix ist (jetzt noch) irrelevant, und Sie können überprüfen, was genau die Datei repräsentiert durch die Ausstellung:

select relname from pg_class  where relfilenode = <NUMBER_FROM_FILE_NAME>;

Sobald Sie wissen, welche Tabellen/Indizes nutzen die meisten den Platz - Sie können VAKUUM VOLL, oder (viel besser) Problem CLUSTER Befehl auf Sie.

Andere Tipps

Auf der neuen Tangente zu Ihrem Problem, können Sie herausfinden, was in der Datenbank viel Platz wird mit mit einem

scroll top