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
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';
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 !
Vous devez être connecté pour poster un message !
Recevoir les derniers articles gratuitement en créant un compte !
S'inscrire
cgallet
Membre depuis le 08/03/2019Ma 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` ?