Gerencio um grande banco de dados (algumas centenas de shows) contendo tabelas com várias funções, algumas delas com milhões de registros. Algumas tabelas recebem apenas um grande número de inserções e exclusões, outras poucas inserções e grande número de atualizações.
O banco de dados é executado no PostgreSQL 8.4 em um sistema Debian 6.0 amd64 com 16 gigabytes de RAM.
A questão é, às vezes, o processo de autovacuum em uma tabela, que leva muito tempo (dias) para ser concluído. Quero poder dizer quanto tempo um determinado comando a vácuo levará para poder decidir se o cancelo ou não. Além disso, se houvesse um indicador de progresso para as operações de vácuo do postgres, seria realmente útil.
Editar:
Não estou procurando uma solução à prova de balas. Apenas uma dica aproximada sobre o número de tuplas mortas ou bytes de E / S necessários é suficiente para decidir. É realmente irritante não ter idéia de quando VACUUMvai terminar, qualquer que seja.
Eu vi que pg_catalog.pg_stat_all_tablestem uma coluna para o número de tuplas mortas. Portanto, é possível ter uma estimativa, mesmo que isso signifique que a pessoa tenha que estar ANALYZEna tabela antes. Por outro lado, autovacuum_vacuum_thresholde autovacuum_vacuum_scale_factoras configurações sozinho provar que postgres si sabe algo sobre a quantidade de mudança nas mesas e provavelmente coloca nas mãos do DBA também.
Não tenho certeza de qual consulta executar, porque quando executo VACUUM VERBOSE, vejo que não apenas as tabelas, mas os índices nelas também estão sendo processados.