PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 25/07/2018 15:46:39

cecile
Membre

Retrouver le nom de tables temporaires générées pendant un vacuum

Bonjour,

J'ai postgresql 9.3 sur Red Hat 6.5
Un vacuum s'exécutait sur la VM. Je décide de l'arrêter au bout de quelque minutes.
En regardant la taille de la base, celle-ci à augmenter notament avec des fichiers temporaires présents dans /var/lib/pgsql/9.3/data/base/14539456/....
Je suppose que ces fichiers sont des tables temporaires.

Peut-on trouver le nom de ces tables temporaire connaissant leurs ID ?
Peut-on lire leur contenu (enregistrements)?
Est ce normal, que la requete select relid, relname from pg_stat_all_tables ne contienne pas ces tables ?

En somme comment faire pour lister ces tables et connaitre leurs noms ?

Cordialement

Hors ligne

#2 25/07/2018 15:57:10

gleu
Administrateur

Re : Retrouver le nom de tables temporaires générées pendant un vacuum

C'était un VACUUM ou un VACUUM FULL ? et vous l'avez arrêté comment ?


Guillaume.

Hors ligne

#3 25/07/2018 16:01:36

cecile
Membre

Re : Retrouver le nom de tables temporaires générées pendant un vacuum

C'était vacuum full analyze
Le vacuum arrêté avec kill -9 num process

Hors ligne

#4 25/07/2018 16:21:24

gleu
Administrateur

Re : Retrouver le nom de tables temporaires générées pendant un vacuum

Dans le cas d'un VACUUM FULL, les données vivantes d'une table sont enregistrées dans d'autres fichiers. À la fin de l'opération, les anciens fichiers sont supprimés. On peut annuler l'exécution d'une requête avec Ctrl-C (si c'est sur une console à laquelle on a accès) ou faire appel à la fonction pg_cancel_backend(). Dans ce cas, PostgreSQL supprime les nouveaux fichiers, conserve les anciens et tout va bien.

Là, vous avez exécuté un kill -9 sur un process PostgreSQL. Le serveur PostgreSQL ne sait pas du tout ce qu'il s'est passé pour ce processus, et de ce fait, ne peut pas faire de nettoyage. S'il y a bien une chose à savoir avec PostgreSQL, c'est qu'il ne faut jamais faire de kill -9 sur un de ses processus.

Bref, du coup, c'est à vous de faire le ménage parce que PostgreSQL n'a pas connaissance de ces fichiers et ne fera donc pas le ménage lui-même. En tout cas, rien n'est cassé. Vous avez juste des fichiers en plus.


Guillaume.

Hors ligne

#5 25/07/2018 16:33:15

cecile
Membre

Re : Retrouver le nom de tables temporaires générées pendant un vacuum

Merci pour la réponse.
Est il possible de connaitre malgré tout les noms de ces fichiers temporaires. En faisant ls -alrt dans  /var/lib/pgsql/9.3/data/base/14539456/ on trouve des  ID ?

Cordialement

Hors ligne

#6 25/07/2018 16:38:49

gleu
Administrateur

Re : Retrouver le nom de tables temporaires générées pendant un vacuum

Vous cherchez quoi exactement ? parce que justement ls vous donne le nom des fichiers smile


Guillaume.

Hors ligne

Pied de page des forums