[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: PG и autovacuum



В документации написано:
"The usual goal of routine vacuuming is to do standard VACUUMs often
enough to avoid needing VACUUM FULL. The autovacuum daemon attempts to
work this way, and in fact will never issue VACUUM FULL."

Cron задействовать не пробовали?

20.10.2014 11:11:36, Dmitry Podkovyrkin:
> Здравствуйте.
> 
> Подскажите пожалуйста, как настроить autovacuum для postgresql.
> Есть одна таблица с часто меняющимися записями, то есть не update, а
> insert, delete.
> Например при полутора миллионах записей:
>                  name                  |  oid  | size_mb | count
> ---------------------------------------+-------+---------+-------------
>  test                                  | 18384 |      92 | 1.59718e+06
>  test_pkey                             | 18387 |      63 | 1.59718e+06*
> *
> 
> После этого удаляем 90% записей, размер тот же.
>                  name                  |  oid  | size_mb | count
> ---------------------------------------+-------+---------+--------
>  test                                  | 18384 |      92 | 161024
>  test_pkey                             | 18387 |      63 | 161024
> 
> Если сделать vacuum full, то размер уменьшается, но это нужно делать
> вручную. Как автоматизировать?
> Таблица дана для примера, реальная разрастается на многие сотни Мб и всё
> растёт.
> Текущие настройки autovacuum:
> #------------------------------------------------------------------------------
> 
> # 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 = 2              # max number of autovacuum
> subprocesses
>                                         # (change requires restart)
> autovacuum_naptime = 10min              # time between autovacuum runs
> autovacuum_vacuum_threshold = 20        # min number of row updates before
>                                         # vacuum
> autovacuum_analyze_threshold = 10       # min number of row updates before
>                                         # analyze
> #autovacuum_vacuum_scale_factor = 0.1   # 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
> 
> 


 


Reply to: