postgresql table bloat autovacuum not keeping up

Posté par cgallet le 25/04/2026
RÉSOLU

cgallet

Membre depuis le 08/03/2019

Ma table d'events sur Postgres prend 400 Go alors qu'elle ne contient que 10 millions de lignes. Le vacuum tourne mais ne libère aucun espace disque à l'OS.

Comment je peux récupérer l'espace sans verrouiller toute la table pendant 5 heures avec un `VACUUM FULL` ?

Commentaires

kbriand

Membre depuis le 17/01/2025

Le `VACUUM` classique ne rend jamais l'espace au disque, il marque juste les pages comme réutilisables. Pour reconstruire la table en ligne sans lock, utilise `pg_repack`.

pg_repack -t events_table -d my_database

cschneider

Membre depuis le 24/02/2025

Vérifie aussi si tu n'as pas une transaction idle très vieille qui traîne. Si c'est le cas, l'autovacuum ne peut rien nettoyer car il doit garder les anciennes versions des lignes pour cette transaction.

SELECT pid, query, state, xact_start FROM pg_stat_activity WHERE state != 'active';

cgallet

Membre depuis le 08/03/2019

C'était bien ça, une session oubliée par un script de data science bloquait le nettoyage depuis 3 jours. J'ai tué le process et `pg_repack` a fait des miracles. J'ai récupéré 350 Go. Merci beaucoup !

Laisser une réponse

Vous devez être connecté pour poster un message !

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire