Estamos usando o Postgres 9.2 no Windows para armazenar dados de séries temporais de baixa frequência: estamos inserindo cerca de 2000 linhas por segundo a cada segundo 24 horas, 7 dias por semana, sem tempo de inatividade. Existe um DELETEque é executado na tabela a cada 10 minutos, aproximadamente, para manter o comprimento da tabela em um número fixo de dias. Isso acaba sendo 900 milhões de linhas razoavelmente estáveis. (Para os interessados, SELECT, INSERT, DELETEestão todos performance).
Como tal DELETE, ao excluir linhas não está liberando espaço em disco. Para isso, precisamos VACUUMcorrer.
Tenho consultas pg_stat_user_tablese VACUUMparece que nunca foi executado.
O que eu entendo de vários documentos ( http://www.postgresql.org/docs/9.2/static/routine-vacuuming.html ):
- parece que o aspirador automático está ativado e está sendo executado em outras tabelas.
- o vácuo automático não funciona
FULLe não deve exigir um bloqueio exclusivo sobre a mesa.
Alguém tem alguma idéia de por que o aspirador automático não está funcionando? Isso é apenas porque a mesa está continuamente ocupada?
E vale a pena correr VACUUMdepois de tudo DELETEnesse caso (que é executado a cada 10 minutos)?
Editar:
Consulta usando o SQL no link SO abaixo:
-[ RECORD 2 ]---+---------------------------
schemaname | stats
relname | statistic_values_by_sec
last_vacuum |
last_autovacuum |
n_tup | 932,315,264
dead_tup | 940,727,818
av_threshold | 186,463,103
expect_av | *
e produção bruta:
-[ RECORD 3 ]-----+---------------------------
relid | 501908
schemaname | stats
relname | statistic_values_by_sec
seq_scan | 12
seq_tup_read | 4526762064
idx_scan | 29643
idx_tup_fetch | 2544206912
n_tup_ins | 1573896877
n_tup_upd | 0
n_tup_del | 941176496
n_tup_hot_upd | 0
n_live_tup | 688858417
n_dead_tup | 940727818
last_vacuum |
last_autovacuum |
last_analyze |
last_autoanalyze | 2014-08-09 01:36:21.703+01
vacuum_count | 0
autovacuum_count | 0
analyze_count | 0
autoanalyze_count | 69
select * from pg_stat_user_tablespara esta tabela (uso\xem psql para uma saída bem formatado)