Bonjour,
J'ai une database de 220Mo qui fonctionne avec PgSQL 8.1 (pas possible d'upgrader maintenant). Si je fait un reindex, l'espace utilisé chute à 220 mais ensuite la db grossit (quelques mo / jour) alors qu'elle ne devrait pas.
J'ai augmenté progressivement les settings du démon autovacuum pour arriver à:
autovacuum = on
autovacuum_naptime = 25
autovacuum_vacuum_threshold = 40
autovacuum_analyze_threshold = 30
autovacuum_vacuum_scale_factor = 0.1
autovacuum_analyze_scale_factor = 0.05
C'est apparement plus que les settings recommandé (par défaut sur un 8.4) ce qui n'empêche pas la db de grossir.
Au niveau du FSM, j'ai fait un VACUUM VERBOSE qui affiche ceci:
INFO: free space map contains 2081 pages in 76 relations
DETAIL: A total of 3088 page slots are in use (including overhead).
3088 page slots are required to track all free space.
Current limits are: 20000 page slots, 1000 relations, using 222 KB.
Donc pas de soucis à ce niveau.
Je ne vois vraiment pas ce qui pourrais causer cette croissance de la taille de la DB (il n'y a pas de nouvelle donnée insérée ou assez peu).
Si quelqu'un a une idée, ça me serait fort utile :)
D'avance merci.
# Problème de VACUUM ?
Posté par Honor (site web personnel) . Évalué à 2.
Si je comprends ton problème, tu as une base ou tu fais des opérations de type UPDATE ou INSERT/DELETE de telle manière que tu garde le même nombre de lignes ?
D'après la documentation de VACUUM le VACUUM normal ne redonne pas l'espace disque au système, il faut faire un VACUUM FULL pour cela, qui prends plus de temps et nécessite de poser des verrous ce qui peut poser problème pour utiliser la base par ailleurs.
Le processus AUTOVACUUM ne fait que des VACUUM simple et donc ne retourne pas l'espace non-utilisé au système
Routine Vacuuming explique tout cela en détail et mieux que moi.
pour finir essaie de passer des VACUUM FULL de temps à autre et de voir si ta base continue à grossir. Si je ne me trompe pas tu devrais récupérer de l'espace disque après chaque VACUUM FULL.
[^] # Re: Problème de VACUUM ?
Posté par Henry-Nicolas Tourneur (site web personnel) . Évalué à 1.
En fait si tu regarde sur ton lien la partie:
Cela veut clairement dire que je ne devrais pas avoir besoin de VACUUM FULL si mon VACUUM démon est bien configuré (la fréquence indiquée devrait suffire).
Apparemment, le retrait des données d'une table n'entraine effectivement pas de libération instantanée de l'espace disque mais ça constitue un pool d'espace qui sera ré-alloué par la suite.
Je dirais donc que pour une db avec peu de mise à jour et beaucoup de consultation, ce problème ne devrait pas apparaitre (et c'est bien pour ça que je ne comprend pas ma situation actuelle).
Merci pour l'aide.
[^] # Re: Problème de VACUUM ?
Posté par benja . Évalué à 1.
Note essaye quand même de lire la doc correspondant à ta version et non à la 9.1... Le vacuum full a été réécrit pour la version 9.
À part cela, ton analyse me semble correcte... Peux-tu essayer de voir l'espace utilisé par les différents objets ? (commande \dS+ iirc, p-ê pas encore dispo dans la 8.4)
[^] # Re: Problème de VACUUM ?
Posté par Henry-Nicolas Tourneur (site web personnel) . Évalué à 1.
En fait j'ai une 8.1, pas une 8.4 (je me suis inspiré des settings de vacuum par défaut sur une 8.4). La doc de la 8.2 (la doc 8.1 n'est plus online) ne me permet pas de mettre en évidence un problème de config.
Sinon le résultat de ta commande est ici: http://pastebin.com/9PEeSK9u
Il n'y a pas de taille d'objet qui s'affiche, si tu as une autre commande pour le même résultat qui fonctionnerait sur une plus vieille version, ça m'intéresserait (que je sache en fait qu'est-ce qui prend la place exactement...).
[^] # Re: Problème de VACUUM ?
Posté par Honor (site web personnel) . Évalué à 1.
La documentation de la 8.1 est encore accessible même si elle n'est plus référencé sur le site de PostgreSQL.
La commande \d+ n'indique la taille qu'à partir de la 8.4
Donc pour avoir la taille, tu va devoir te palucher Chapter 25. Monitoring Disk Usage et Database Object Size Functions
Comme tu nous dit que tu regagnes de la place en faisant un REINDEX, tu devrais regarder en priorité la taille de tes index.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.