Vous n'êtes pas identifié(e).
Pages : 1
Bonjour à tous
Je poste ici quelques questions en rapport avec l'autovacuum qui me laisse perplexe et j'aimerais avoir des éclaircissement si possible
Version de postgresql utilisé 9.3.9.
Environnement : Windows
1/ J'ai lu à plusieurs endroits que l'autovacuum était par défaut activé dans postgresql
Or j'ai aussi lu ceci :
"23.1.6. Le démon auto-vacuum
PostgreSQL ™ dispose d'une fonctionnalité optionnelle mais hautement recommandée appelée autovacuum, dont le but est d'automatiser l'exécution des commandes VACUUM et ANALYZE .Une fois activé , autovacuum vérifie les tables ayant un grand nombre de lignes insérées, mises à jour ou supprimées. Ces vérifications utilisent la fonctionnalité de récupération de statistiques ; du coup, autovacuum ne peut pas être utilisé sauf si track_counts est configuré à true. Dans la configuration par défaut, l'autovacuum est activé et les paramètres liés sont correctement configurés.
"
Ce texte en gras ne semble il pas indiqué le contraire ?
Sachant que dans le fichier de config installé par défaut toutes les ligne en relation avec l'autovacuum sont commenté
#------------------------------------------------------------------------------
# AUTOVACUUM PARAMETERS
#------------------------------------------------------------------------------
#autovacuum = on # Enable autovacuum subprocess? 'on'
# requires track_counts to also be on.
#log_autovacuum_min_duration = -1 # -1 disables, 0 logs all actions and
# their durations, > 0 logs only
# actions running at least this number
# of milliseconds.
#autovacuum_max_workers = 3 # max number of autovacuum subprocesses
# (change requires restart)
#autovacuum_naptime = 1min # time between autovacuum runs
#autovacuum_vacuum_threshold = 50 # min number of row updates before
# vacuum
#autovacuum_analyze_threshold = 50 # min number of row updates before
# analyze
#autovacuum_vacuum_scale_factor = 0.2 # fraction of table size before vacuum
#autovacuum_analyze_scale_factor = 0.1 # fraction of table size before analyze
#autovacuum_freeze_max_age = 200000000 # maximum XID age before forced vacuum
# (change requires restart)
#autovacuum_multixact_freeze_max_age = 400000000 # maximum Multixact age
# before forced vacuum
# (change requires restart)
#autovacuum_vacuum_cost_delay = 20ms # default vacuum cost delay for
# autovacuum, in milliseconds;
# -1 means use vacuum_cost_delay
#autovacuum_vacuum_cost_limit = -1 # default vacuum cost limit for
# autovacuum, -1 means use
# vacuum_cost_limit
2/ Si effectivement l'autovacuum est activé par défaut
Pourquoi lorsque j'ouvre pgadmin et que je sélectionne certaine table il m'affiche un message d'aler m'indiquant qu'un vacuum est recommandé ?
Running VACUUM recommended
The estimated rowcount on the table "template" deviates significantly from the actual rowcount. You should run VACUUM ANALYZE on this table.
Instead of issuing a manual VACUUM ANALYZE command on this table (you can use the pgAdmin III maintenance menu for this), running VACUUM ANALYZE on a regular or automated basis should be considered. This can be achieved using a scheduler. PostgreSQL also supplies the autovacuum daemon, which will track changes made to the database and issue vacuum commands as required automatically. In most cases, autovacuum will be the best choice.
Sachant en plus que cette table dans mon exemple n'a pas changé d'un iota depuis la création de la table et l'insertion des lignes par défaut:
Désolé s mes questions peuvent paraitre bête je débute avec postgre
D'avance merci
Cordialement
Hors ligne
Bonjour,
Autovacuum est activé par défaut.
Vous pouvez vérifier cela dans pg_settings.
Maintenant le fait que pgadmin vous prévient qu'il faille faire un vacuum (c'est différent de autovacuum !!) c'est probablement du au fait que le last_vacuum de la table pg_stat_all_tables pour votre table "template" doit être vide ("null") ou trop vieux.
Cordialement.
Cordialement,
Sébastien.
Hors ligne
Maintenant le fait que pgadmin vous prévient qu'il faille faire un vacuum (c'est différent de autovacuum !!) c'est probablement du au fait que le last_vacuum de la table pg_stat_all_tables pour votre table "template" doit être vide ("null") ou trop vieux.
Non, cette astuce a été codée bien avant l'arrivée de cette colonne dans pg_stat_user_tables. Il suit une autre heuristique, bien obsolète. Pour le dire autrement, l'astuce de pgAdmin peut être tranquillement ignorée.
Pourquoi lorsque j'ouvre pgadmin et que je sélectionne certaine table il m'affiche un message d'aler m'indiquant qu'un vacuum est recommandé ?
Ce n'est pas parce que l'autovacuum est activé qu'il est forcément bien configuré.
Guillaume.
Hors ligne
Bonjour
Merci pour ces retours
dès lors j'ai une dernière question
ma fameuse table template alors qu'elle n'a jamais changé depuis son installation peut avoir après un ANALYZE plusieurs "row dead"
Je croyais que ces ligne morte était due au opération de delete ?
Hors ligne
Une ligne morte peut être dû à un DELETE, mais aussi à un UPDATE ou à un INSERT/COPY rollbacké.
Guillaume.
Hors ligne
Pages : 1