PostgreSQL: l'espace disque non libéré après TRUNCATE
-
16-10-2019 - |
Question
Je haveTRUNCATE
d un énorme (~ 120 Go) table appelée files
:
TRUNCATE files;
VACUUM FULL files;
La taille de la table est 0, mais pas d'espace disque a été libéré. Toute idée comment récupérer mon espace disque perdu?
Mise à jour: L'espace disque a été libéré après environ 12 heures, sans aucune action de mon côté. J'utilise le serveur Ubuntu 8.04.
La solution
Selon dans la source, truncate
crée un nouveau fichier de stockage vide, et supprime l'ancien fichier de stockage à consacrer du temps. (Docs suggèrent « fichier de stockage » est juste un fichier dans la mesure où le système d'exploitation est concerné, mais je pourrais être mal compris la nature de la terminologie.)
Créer un nouveau fichier de stockage vide pour la relation, et l'affecter comme valeur relfilenode. Le vieux stockage fichier est prévu pour la suppression à engager.
Comme il semble être la suppression d'un fichier, je peux imaginer des cas où le système d'exploitation sous-jacent pourrait ne pas libérer immédiatement cet espace. Je suppose que, dans certains cas, le fichier de stockage peut se retrouver dans le bac de recyclage sous Windows, par exemple. Mais dans mon cas, tronquer une table sous PostgreSQL 9.something augmenté immédiatement sous Windows freespace.
troncature est également enregistré dans le journal WAL. Je ne sais pas comment beaucoup d'effet qui pourrait avoir.