Ho PostgreSQL 9.2 in esecuzione su Ubuntu. Il processo autovacuum è in esecuzione sul server.autovacuum postgresql non funziona nonostante il processo sia in esecuzione
Il database ha un carico pesante, migliaia di aggiunte e centinaia di eliminazioni quotidiane eppure sembra che l'autovacuum non si accenda.
Non c'è nulla relativo al vuoto nei registri.
Facendo ps -ef | grep -i vacuum
produce: postgres 1406 1130 0 Oct13 00:00:14 postgres: autovacuum launcher process
interrogazione SELECT last_autovacuum , last_autoanalyze FROM pg_stat_user_tables;
Esecuzione produce nessun record in ultima colonna autovacuum, e 2 entrys nella colonna suto_analyze.
La sezione pertinente di postgresql.conf è:
#------------------------------------------------------------------------------
# AUTOVACUUM PARAMETERS
#------------------------------------------------------------------------------
autovacuum = on # Enable autovacuum subprocess? 'on'
# requires track_counts to also be on.
log_autovacuum_min_duration = 250 # -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 = 128 # min number of row updates before
# vacuum
autovacuum_analyze_threshold = 128 # 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_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
Qualche idea?
Vedi http://www.postgresql.org/docs/9.2/static/monitoring-stats.html last_autovacuum - L'ultima volta in cui questo tavolo è stato aspirato dal autovacuum demone. Immagino che sia il momento di finire l'autovaccuum. Se il daemon produce un carico elevato, è comunque possibile eseguire comunque la maggior parte delle volte. Prova a eseguire il vuoto dalla riga di comando come un comando SQL per vedere quanto tempo esegue il vuoto su ogni tabella. –
"1000 di aggiunte e centinaia di eliminazioni" non è tutta questa attività. Hai gonfio nei tavoli? N_dead_tup suggerisce che l'aspirazione sia effettivamente dovuta per qualsiasi tabella? Forse l'aspirapolvere non è necessario molto spesso per te. L'impostazione log_autovacuum_min_duration = 0 dovrebbe ottenere più materiale scritto nei log, anche se forse non abbastanza per dimostrarti che funziona bene. Cos'è suto_analyze? – jjanes