Domanda

Ho un "piccolo" problema. Una settimana fa il mio database stava raggiungendo capasity completa del disco. Ho cancellato il numero di righe in tabelle diverse cercando di liberare spazio su disco. Oltre il quale ho provato a fare funzionare un wich vuoto completo non è stato completato.

Quello che voglio sapere è. Quando ho smesso il vuoto da completamente compliting vuol lasciare tutti i file temporanei sul disco che devo eliminare manualy? Ora ho un wich database è in un capasity disco al 100%, wich inutilmente di dire è un grosso problema.

Tutte le punte per liberare spazio su disco?

Io corro SUSE con Postgres 8.1.4 database.

È stato utile?

Soluzione

Prima di tutto:

AGGIORNAMENTO

Anche se non è possibile a 8.2, 8.3 o 8.4 -. Almeno l'aggiornamento alla più recente 8.1 (che è 8.1.17 al momento, ma sarà 8.1.18 in 1-2 giorni)

In secondo luogo:. Diagnosticare qual è il problema

du strumento per diagnosticare esattamente dove ha lo spazio andare. Cosa directory sta occupando troppo spazio?

df ciò che è spazio utilizzato totale, e quindi controllare quanto di esso è directory di PostgreSQL.

L'opzione migliore è quella di:

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

Ora, che si sa quale sia la directory in PGDATA sta utilizzando lo spazio che si può fare qualcosa al riguardo.

se si tratta di tronchi o pg_temp -. Riavvio pg o di rimuovere i registri (! Pg_clog e pg_xlog non sono i registri in senso comune della parola, non eliminare nulla da lì)

Se è qualcosa nella vostra directory di base, quindi:

indici numerici in directory di base relativi ai database. È possibile controllare con:

select oid, datname from pg_database;

Quando si conosce il database che utilizza la maggior parte dello spazio, connettersi ad esso, e controllare quali file stanno utilizzando la maggior parte dello spazio.

I nomi dei file saranno numerico con ".digits" opzionali suffisso - questo suffisso è (per ora) irrilevante, e si può controllare che cosa esattamente il file rappresenta mediante l'emissione di:

select relname from pg_class  where relfilenode = <NUMBER_FROM_FILE_NAME>;

Una volta che sai che tabelle / indici utilizzare la maggior parte dello spazio - si può vuoto completo, o (molto meglio) problema comando cluster su di loro.

Altri suggerimenti

Sulla nuova tangente al vostro problema, si può scoprire che cosa nel database utilizza un sacco di spazio utilizzando un query. Questo può aiutare a individuare i candidati per troncare per recuperare lo spazio di lavoro sufficiente per ripulire quelli con informazioni cancellato.

Si noti che l'eliminazione di un sacco di file, ma non l'aspirapolvere abbastanza di frequente per mantenere lo spazio su disco sotto controllo spesso portare ad una condizione chiamata indice di gonfiare, che VUOTO PIENO non aiuta con affatto. Saprete che ci sei quando la query ho suggerito mostra la maggior parte del vostro spazio è occupato da indici piuttosto che tavoli regolari. Avrete bisogno di CLUSTER, che ha bisogno di tutto lo spazio libero su disco come il tavolo stesso per ricostruire tutto, per recuperare da questo problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top