Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#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
Guillaume.
Hors ligne