Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search archives
  Advanced Search

Re: COUNT(*) дофиг а весит


  • From: Maxim Boguk <mboguk(at)masterhost(dot)ru>
  • To: silly_sad <sad(at)bankir(dot)ru>
  • Cc: pgsql-ru-general(at)postgresql(dot)org
  • Subject: Re: COUNT(*) дофиг а весит
  • Date: Thu, 17 Apr 2008 11:51:46 +0400
  • Message-id: <48070192.7050609@masterhost.ru> <text/plain>

silly_sad пишет:
Alex Gorbachenko wrote:

silly_sad wrote:

 >> и не понял, каким образом автовакуум избавит меня от необходимости
 >> FULL вакуума ?

 > тем, что он всё сделает за вас. причём при правильных настройках на
 > производительности всего остального его работа не скажется.

делает ли он за меня FULL ? или каким-то образом делает FULL ненужным?

В нормальной ситуации правильно настроенный autovacuum действительно делает vacuum full ненужным.

По одной причине: vacuum помечает удаленные записи как место которое можно повторно использовать.
Если таблицу обновляется очень активно то за сутки между запусками vacuum full таблица успевает очень сильно разрастись.
Делать же ежеминутный просто vacuum не выгодно так как он будет vacuum всего подряд а не только тех таблиц которые обновились.
(а autovacuum отслеживает степень обновления таблиц).
Autovacuum просто не дают таблице распухать выше определенного предела так как свободное место будет отмечено и повторно использовано.
(как правило удается держать таблицы в неболее чем 2х кратном размере от минимально возможного).

Если у вас есть активнообновляемые таблицы то настройки могут выглядеть приблизительно так:
autovacuum = on
autovacuum_naptime = 1min
Остальные параметры пока можно не трогать.

PS: если у вас есть активное обновление я бы рекомендовал раз в неделю или месяц делать REINDEX DATABASE (так как индексы тоже имеют свойство распухать со временем)
Но Reindex так же блокирует доступ к таблице как и vacuum full.

PPS: надо понимать что просто vacuum (без full) не блокирует работу с таблицей и не сказывается на работоспособности сервиса...

PPPS: для работоспособности autovacuum надо не забывать включать (пре 8.3):
stats_start_collector = on
stats_block_level = on
stats_row_level = on
(на 8.3 просто надо указать: track_counts = on)


Объясните пожалуйста, в чем разница между авто и еженочным vaccuum
analyze?

в том, что autovacuum проверяет количество измененных
записей в таблицах, и запускается в случае, если это количество некоего числа. что позволяет "размазать" вакуум по времени. по моему в
документации это написано довольно подробно.

Алгоритм запуска этой процедуры мне понятен.
Мне непонятно каким образом частые вакуумы оказываются более эффективными в смысле очистки места чем ежесуточные.

насколько я смог судить из документации автомат вызывает
VACUUM.
А меня сейчас спасает только VACUUM FULL (ежесуточного хватает).
(Несколько таблиц очень интенсивно апдэйтятся)





--
Maxim Boguk



Home | Main Index | Thread Index

Privacy Policy | About PostgreSQL
Copyright © 1996 – 2012 PostgreSQL Global Development Group