मेरे पास पोस्टब्रेएसक्यूएल 9.2 उबंटू पर चल रहा है। ऑटोवाक्यूम प्रक्रिया सर्वर पर चल रही है।postgresql autovacuum काम नहीं कर रहा है हालांकि प्रक्रिया चल रही है
डेटाबेस में भारी भार, 1000 के अतिरिक्त और 100 हटाने के दैनिक हैं और फिर भी ऐसा लगता है कि ऑटोवाक्यूम फायरिंग नहीं कर रहा है।
लॉग में वैक्यूम से संबंधित कुछ भी नहीं है।
कर ps -ef | grep -i vacuum
पैदा करता है: postgres 1406 1130 0 Oct13 00:00:14 postgres: autovacuum launcher process
क्वेरी SELECT last_autovacuum , last_autoanalyze FROM pg_stat_user_tables;
रनिंग पिछले autovacuum स्तंभ में कोई रिकॉर्ड है, और suto_analyze कॉलम में 2 entrys पैदा करता है।
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
किसी भी विचार?
देखें http://www.postgresql.org/docs/9.2/static/monitoring-stats.html last_autovacuum - पिछली बार जिस पर इस तालिका autovacuum द्वारा वैक्यूम गया था डेमॉन। मुझे लगता है कि यह autovaccuum खत्म करने का timestemp है। बस अगर डेमॉन उच्च भार उत्पन्न करता है तो यह संभवतः वैसे भी चल रहा है। कमांड लाइन से वैक्यूम को SQL कमांड के रूप में चलाने के लिए यह देखने के लिए कि प्रत्येक तालिका पर वैक्यूम कितना समय चलता है। –
"1000 के अतिरिक्त और 100 हटाए जाने की कमी" उतनी ही अधिक गतिविधि नहीं है। क्या आपके पास टेबल में ब्लोट है? क्या n_dead_tup सुझाव देता है कि वैक्यूमिंग वास्तव में किसी भी टेबल के लिए है? हो सकता है कि वैक्यूमिंग सिर्फ आपके लिए अक्सर जरूरी नहीं है। लॉग_autovacuum_min_duration = 0 को सेट करने से लॉग पर अधिक सामान मिलना चाहिए, हालांकि शायद यह साबित करने के लिए पर्याप्त नहीं है कि यह अच्छी तरह से काम कर रहा है। Suto_analyze क्या है? – jjanes