Question

J'ai un problème « peu ». Il y a une semaine ma base de données a été atteint capasity complète du disque. J'ai supprimé de nombreuses lignes dans différentes tables en essayant de libérer de l'espace disque. Après Wich i essayé de courir un wich vide complet n'a pas terminé.

Ce que je veux savoir est. Lorsque je me suis arrêté le vide de complètement compliting-t-il laisser des fichiers temporaires sur le disque que je dois supprimer manualy? J'ai maintenant une base de données Wich est à un capasity disque 100%, wich inutilement à dire est un gros problème.

Des conseils à l'espace libre sur le disque?

Je suis en cours d'exécution SUSE avec une base de données postgres 8.1.4.

Était-ce utile?

La solution

Tout d'abord:

UPGRADE

Même si vous ne pouvez pas à 8,2, 8,3 ou 8,4 -. Au moins la mise à niveau au plus récent 8.1 (qui est 8.1.17 au moment, mais sera 8.1.18 dans 1-2 jours)

Deuxièmement:. Diagnostiquer quel est le problème

outil

Utilisez du pour diagnostiquer exactement où l'espace ne va. Quel répertoire occupe trop de place?

Consultez df ce qui est l'espace total utilisé, puis vérifier combien de celui-ci est le répertoire de PostgreSQL.

La meilleure option est à:

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

Maintenant que vous savez quel répertoire PGDATA utilise l'espace que vous pouvez faire quelque chose.

si elle est ou les journaux pg_temp -. Pg restart ou de supprimer les journaux (! Pg_clog et pg_xlog ne sont pas des journaux dans le sens commun du mot, ne jamais supprimer quoi que ce soit à partir de là)

Si c'est quelque chose dans votre répertoire de base, puis:

répertoires numériques dans le répertoire de base se rapportent à des bases de données. Vous pouvez le vérifier avec:

select oid, datname from pg_database;

Lorsque vous connaissez la base de données qui utilise la plupart de l'espace, s'y connecter, et vérifier quels fichiers utilisent la plupart de l'espace.

Les noms de fichiers seront suffixe numérique avec option « .digits » - ce suffixe est (pour l'instant) hors de propos, et vous pouvez vérifier exactement ce que le fichier représente par l'émission:

select relname from pg_class  where relfilenode = <NUMBER_FROM_FILE_NAME>;

Une fois que vous savez quelles tables / index utiliser la plupart de l'espace - vous pouvez VACUUM FULL, ou question (beaucoup mieux) la commande de CLUSTER sur eux.

scroll top